本文介绍了如何使用 Glassfish 应用服务器 设置和配置 MySQL 数据库

如何使用 MySQL 配置 Glassfish 4 - 图1

如今,MySQL 已在生产和开发环境中广泛使用。 Glassfish 4(及先前版本)具有易于管理数据库连接的界面。 您可以使用 Glassfish 的管理控制台来设置和配置 MySQL 数据库,或者,如果您愿意,可以编辑包含数据库首选项的配置文件。 我将在本教程中向您展示这两种方法。 核心部分本教程也适用于 Payara。

要求

MySQL Server 安装在本地或远程计算机上。 另外,您将需要一个现有用户(带有密码)和一个对该用户具有读/写权限的数据库

Glassfish(或 Payara)4 应用程序服务器

在 Glassfish 上安装 MySQL Java Connector

MySQL 的官方 JDBC(Java 数据库连接)驱动程序称为 MySQL Connector/J。 您可以在 https://dev.mysql.com/downloads/connector/j/ 找到下载页面。

  1. 下载 TAR 或 ZIP 归档文件 - 无论您喜欢使用什么文件。 解压缩档案后,您会发现一个名为mysql-connector-java-X.X.XX-bin.jar的 JAR 文件(其中X.X.XX是版本号)。
  2. 将 JAR 文件粘贴到您的GLASSFISH_HOME/glassfish/bin目录中
  3. 重新启动 Glassfish,以使更改生效

创建 Glassfish JDBC 连接池

在本地主机上打开 Glassfish 管理控制台:4848

展开 JDBC,然后单击“JDBC 连接池”

单击“新建…”按钮以创建新的连接池

如何使用 MySQL 配置 Glassfish 4 - 图2

Glassfish 创建新的 JDBC 连接池

在“池名称”中输入连接池的名称

选择javax.sql.DataSource作为“资源类型”

选择 MySql 作为“数据库驱动程序供应商”

点击“下一步”按钮进行下一步

如何使用 MySQL 配置 Glassfish 4 - 图3

创建 JDBC 连接池

在屏幕 #2 上,检查“数据源类名”,应将其设置为com.mysql.jdbc.jdbc2.optional.MysqlDataSource

启用“Ping”

如何使用 MySQL 配置 Glassfish 4 - 图4

创建 JDBC 连接池的步骤 2

现在在同一屏幕上向下滚动。

填写以下必填字段:

  • User – 输入数据库用户名
  • DatabaseName –输入数据库的名称
  • Password – 是您在第一个字段中输入的用户密码
  • URLUrl – 在jdbc:mysql://:3306/之后添加数据库的名称,因此它成为jdbc:mysql://:3306/tutorials

如何使用 MySQL 配置 Glassfish 4 - 图5

如何使用 MySQL 配置 Glassfish 4 - 图6

如何使用 MySQL 配置 Glassfish 4 - 图7

您可能要根据项目的偏好填写其他一些字段,这完全取决于您!

单击“完成”按钮以保存您的配置。 发送到数据库的ping命令以检查连接。 如果一切正常,您将看到以下消息:

如何使用 MySQL 配置 Glassfish 4 - 图8

如果看到错误消息,请单击“编辑”,然后检查输入的数据是否正确。

在 Glassfish 中创建 JDBC 资源

创建 JDBC 资源不一定是 MySQL 配置教程的一部分,但是您将需要使用它来将项目连接到数据库,因此在这里进行介绍:

选择“JDBC 资源”,然后单击“新建…”按钮

如何使用 MySQL 配置 Glassfish 4 - 图9

Glassfish JDBC 资源

在“JNDI 名称”下,输入jdbc/,然后输入您要为此资源指定的名称。 例如jdbc/tutorialsDS

在“池名称”下,选择您在上一步中刚刚创建的连接池的名称

保存新创建的 JDBC 资源

如何使用 MySQL 配置 Glassfish 4 - 图10

Glassfish 创建新的 JDBC 资源

好的! 现在,您可以将 MySQL 数据库与在 Glassfish 服务器上部署的应用程序一起使用了。

替代配置方法

如果您希望通过编辑配置文件来创建连接池和 JDBC 资源,则可以通过在<resources>...</resources>标记之间的以下行中为选定域的GLASSFISH_HOME/glassfish/domains/domain1/config/domain.xml插入 Glassfish 的配置文件中来轻松完成此操作

  1. <jdbc-connection-pool ping="true" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" name="MySQLPool" res-type="javax.sql.DataSource">
  2. <property name="SelfDestructOnPingSecondsLifetime" value="0"></property>
  3. <property name="UseUsageAdvisor" value="false"></property>
  4. <property name="AllowSlaveDownConnections" value="false"></property>
  5. <property name="LoadBalanceBlacklistTimeout" value="0"></property>
  6. <property name="QueryTimeoutKillsConnection" value="false"></property>
  7. <property name="CacheServerConfiguration" value="false"></property>
  8. <property name="RoundRobinLoadBalance" value="false"></property>
  9. <property name="UseCursorFetch" value="false"></property>
  10. <property name="JdbcCompliantTruncation" value="true"></property>
  11. <property name="UseOnlyServerErrorMessages" value="true"></property>
  12. <property name="AllowPublicKeyRetrieval" value="false"></property>
  13. <property name="DefaultAuthenticationPlugin" value="com.mysql.jdbc.authentication.MysqlNativePasswordPlugin"></property>
  14. <property name="DontTrackOpenResources" value="false"></property>
  15. <property name="UseInformationSchema" value="false"></property>
  16. <property name="UseNanosForElapsedTime" value="false"></property>
  17. <property name="UseCompression" value="false"></property>
  18. <property name="EnableEscapeProcessing" value="true"></property>
  19. <property name="PasswordCharacterEncoding" value="UTF-8"></property>
  20. <property name="AutoDeserialize" value="false"></property>
  21. <property name="TcpRcvBuf" value="0"></property>
  22. <property name="CallableStatementCacheSize" value="100"></property>
  23. <property name="AutoSlowLog" value="true"></property>
  24. <property name="IgnoreNonTxTables" value="false"></property>
  25. <property name="UseJDBCCompliantTimezoneShift" value="false"></property>
  26. <property name="AllowNanAndInf" value="false"></property>
  27. <property name="TcpSndBuf" value="0"></property>
  28. <property name="ContinueBatchOnError" value="true"></property>
  29. <property name="Logger" value="com.mysql.jdbc.log.StandardLogger"></property>
  30. <property name="MaxAllowedPacket" value="-1"></property>
  31. <property name="PrepStmtCacheSqlLimit" value="256"></property>
  32. <property name="AllowMultiQueries" value="false"></property>
  33. <property name="StrictFloatingPoint" value="false"></property>
  34. <property name="PreparedStatementCacheSqlLimit" value="256"></property>
  35. <property name="CachePreparedStatements" value="false"></property>
  36. <property name="InitialTimeout" value="2"></property>
  37. <property name="UseUnicode" value="true"></property>
  38. <property name="AutoClosePStmtStreams" value="false"></property>
  39. <property name="UseServerPrepStmts" value="false"></property>
  40. <property name="IncludeThreadNamesAsStatementComment" value="false"></property>
  41. <property name="PreparedStatementCacheSize" value="25"></property>
  42. <property name="CreateDatabaseIfNotExist" value="false"></property>
  43. <property name="RollbackOnPooledClose" value="true"></property>
  44. <property name="SocketFactoryClassName" value="com.mysql.jdbc.StandardSocketFactory"></property>
  45. <property name="LoadBalanceValidateConnectionOnSwapServer" value="false"></property>
  46. <property name="CompensateOnDuplicateKeyUpdateCounts" value="false"></property>
  47. <property name="EnablePacketDebug" value="false"></property>
  48. <property name="JdbcCompliantTruncationForReads" value="true"></property>
  49. <property name="PadCharsWithSpace" value="false"></property>
  50. <property name="NoAccessToProcedureBodies" value="false"></property>
  51. <property name="UseTimezone" value="false"></property>
  52. <property name="ClientCertificateKeyStoreType" value="JKS"></property>
  53. <property name="Port" value="3306"></property>
  54. <property name="ClientInfoProvider" value="com.mysql.jdbc.JDBC4CommentClientInfoProvider"></property>
  55. <property name="IsInteractiveClient" value="false"></property>
  56. <property name="CachePrepStmts" value="false"></property>
  57. <property name="ProfileSQL" value="false"></property>
  58. <property name="ProfileSql" value="false"></property>
  59. <property name="MaxQuerySizeToLog" value="2048"></property>
  60. <property name="LoadBalanceHostRemovalGracePeriod" value="15000"></property>
  61. <property name="TreatUtilDateAsTimestamp" value="true"></property>
  62. <property name="DynamicCalendars" value="false"></property>
  63. <property name="DatabaseName" value="tutorials"></property>
  64. <property name="UseSSL" value="false"></property>
  65. <property name="DisconnectOnExpiredPasswords" value="true"></property>
  66. <property name="DontCheckOnDuplicateKeyUpdateInSQL" value="false"></property>
  67. <property name="TrustCertificateKeyStoreType" value="JKS"></property>
  68. <property name="MaxRows" value="-1"></property>
  69. <property name="SlowQueryThresholdMillis" value="2000"></property>
  70. <property name="ResultSetSizeThreshold" value="100"></property>
  71. <property name="UseBlobToStoreUTF8OutsideBMP" value="false"></property>
  72. <property name="TransformedBitIsBoolean" value="false"></property>
  73. <property name="Pedantic" value="false"></property>
  74. <property name="SocksProxyPort" value="1080"></property>
  75. <property name="UseUltraDevWorkAround" value="false"></property>
  76. <property name="EnableQueryTimeouts" value="true"></property>
  77. <property name="LogXaCommands" value="false"></property>
  78. <property name="PrepStmtCacheSize" value="25"></property>
  79. <property name="Password" value="YOUR_DB_PASSWORD_HERE"></property>
  80. <property name="SelfDestructOnPingMaxOperations" value="0"></property>
  81. <property name="ZeroDateTimeBehavior" value="exception"></property>
  82. <property name="CallableStmtCacheSize" value="100"></property>
  83. <property name="SecondsBeforeRetryMaster" value="30"></property>
  84. <property name="EmulateLocators" value="false"></property>
  85. <property name="LoginTimeout" value="0"></property>
  86. <property name="GatherPerfMetrics" value="false"></property>
  87. <property name="RetriesAllDown" value="120"></property>
  88. <property name="DetectCustomCollations" value="false"></property>
  89. <property name="NoDatetimeStringSync" value="false"></property>
  90. <property name="LoadBalanceStrategy" value="random"></property>
  91. <property name="UseOldUTF8Behavior" value="false"></property>
  92. <property name="LoadBalanceAutoCommitStatementThreshold" value="0"></property>
  93. <property name="UltraDevHack" value="false"></property>
  94. <property name="UseFastIntParsing" value="true"></property>
  95. <property name="StrictUpdates" value="true"></property>
  96. <property name="EmptyStringsConvertToZero" value="true"></property>
  97. <property name="UseLocalSessionState" value="false"></property>
  98. <property name="LoggerClassName" value="com.mysql.jdbc.log.StandardLogger"></property>
  99. <property name="NullNamePatternMatchesAll" value="true"></property>
  100. <property name="PopulateInsertRowWithDefaultValues" value="false"></property>
  101. <property name="ProfilerEventHandler" value="com.mysql.jdbc.profiler.LoggingProfilerEventHandler"></property>
  102. <property name="UseStreamLengthsInPrepStmts" value="true"></property>
  103. <property name="RunningCTS13" value="false"></property>
  104. <property name="UseOldAliasMetadataBehavior" value="false"></property>
  105. <property name="ReadOnlyPropagatesToServer" value="true"></property>
  106. <property name="SocketFactory" value="com.mysql.jdbc.StandardSocketFactory"></property>
  107. <property name="MaxReconnects" value="3"></property>
  108. <property name="ReportMetricsIntervalMillis" value="30000"></property>
  109. <property name="BlobsAreStrings" value="false"></property>
  110. <property name="SendFractionalSeconds" value="true"></property>
  111. <property name="CacheResultSetMetadata" value="false"></property>
  112. <property name="Paranoid" value="false"></property>
  113. <property name="AllowUrlInLocalInfile" value="false"></property>
  114. <property name="NoTimezoneConversionForTimeType" value="false"></property>
  115. <property name="EmulateUnsupportedPstmts" value="true"></property>
  116. <property name="ReconnectAtTxEnd" value="false"></property>
  117. <property name="RequireSSL" value="false"></property>
  118. <property name="UseHostsInPrivileges" value="true"></property>
  119. <property name="UseSSPSCompatibleTimezoneShift" value="false"></property>
  120. <property name="UseReadAheadInput" value="true"></property>
  121. <property name="ParseInfoCacheFactory" value="com.mysql.jdbc.PerConnectionLRUFactory"></property>
  122. <property name="DefaultFetchSize" value="0"></property>
  123. <property name="URL" value="jdbc:mysql://localhost:3306/tutorials"></property>
  124. <property name="Url" value="jdbc:mysql://localhost:3306/tutorials"></property>
  125. <property name="AllowMasterDownConnections" value="false"></property>
  126. <property name="CacheDefaultTimezone" value="true"></property>
  127. <property name="QueriesBeforeRetryMaster" value="50"></property>
  128. <property name="FunctionsNeverReturnBlobs" value="false"></property>
  129. <property name="DumpQueriesOnException" value="false"></property>
  130. <property name="LoadBalanceExceptionChecker" value="com.mysql.jdbc.StandardLoadBalanceExceptionChecker"></property>
  131. <property name="VerifyServerCertificate" value="true"></property>
  132. <property name="NetTimeoutForStreamingResults" value="600"></property>
  133. <property name="ProcessEscapeCodesForPrepStmts" value="true"></property>
  134. <property name="UseAffectedRows" value="false"></property>
  135. <property name="GatherPerformanceMetrics" value="false"></property>
  136. <property name="TinyInt1isBit" value="true"></property>
  137. <property name="MetadataCacheSize" value="50"></property>
  138. <property name="RewriteBatchedStatements" value="false"></property>
  139. <property name="CacheCallableStatements" value="false"></property>
  140. <property name="ServerName" value="localhost"></property>
  141. <property name="GetProceduresReturnsFunctions" value="true"></property>
  142. <property name="UseGmtMillisForDatetimes" value="false"></property>
  143. <property name="CapitalizeTypeNames" value="true"></property>
  144. <property name="ServerConfigCacheFactory" value="com.mysql.jdbc.PerVmServerConfigCacheFactory"></property>
  145. <property name="NoTimezoneConversionForDateType" value="true"></property>
  146. <property name="TcpTrafficClass" value="0"></property>
  147. <property name="AutoGenerateTestcaseScript" value="false"></property>
  148. <property name="CacheCallableStmts" value="false"></property>
  149. <property name="FailOverReadOnly" value="true"></property>
  150. <property name="LoadBalancePingTimeout" value="0"></property>
  151. <property name="LocatorFetchBufferSize" value="1048576"></property>
  152. <property name="RelaxAutoCommit" value="false"></property>
  153. <property name="UseFastDateParsing" value="true"></property>
  154. <property name="LoadBalanceEnableJMX" value="false"></property>
  155. <property name="OverrideSupportsIntegrityEnhancementFacility" value="false"></property>
  156. <property name="HoldResultsOpenOverStatementClose" value="false"></property>
  157. <property name="InteractiveClient" value="false"></property>
  158. <property name="UseJvmCharsetConverters" value="false"></property>
  159. <property name="PortNumber" value="3306"></property>
  160. <property name="UseDynamicCharsetInfo" value="true"></property>
  161. <property name="LogSlowQueries" value="false"></property>
  162. <property name="IncludeThreadDumpInDeadlockExceptions" value="false"></property>
  163. <property name="ReplicationEnableJMX" value="false"></property>
  164. <property name="SlowQueryThresholdNanos" value="0"></property>
  165. <property name="UseDirectRowUnpack" value="true"></property>
  166. <property name="UseSqlStateCodes" value="true"></property>
  167. <property name="IncludeInnodbStatusInDeadlockExceptions" value="false"></property>
  168. <property name="MaintainTimeStats" value="true"></property>
  169. <property name="PinGlobalTxToPhysicalConnection" value="false"></property>
  170. <property name="TcpNoDelay" value="true"></property>
  171. <property name="TraceProtocol" value="false"></property>
  172. <property name="AlwaysSendSetIsolation" value="true"></property>
  173. <property name="NullCatalogMeansCurrent" value="true"></property>
  174. <property name="YearIsDateType" value="true"></property>
  175. <property name="SocketTimeout" value="0"></property>
  176. <property name="UseServerPreparedStmts" value="false"></property>
  177. <property name="UseLocalTransactionState" value="false"></property>
  178. <property name="GenerateSimpleParameterMetadata" value="false"></property>
  179. <property name="ExplainSlowQueries" value="false"></property>
  180. <property name="UseColumnNamesInFindColumn" value="false"></property>
  181. <property name="ConnectTimeout" value="0"></property>
  182. <property name="ElideSetAutoCommits" value="false"></property>
  183. <property name="PacketDebugBufferSize" value="20"></property>
  184. <property name="RetainStatementAfterResultSetClose" value="false"></property>
  185. <property name="DumpMetadataOnColumnNotFound" value="false"></property>
  186. <property name="BlobSendChunkSize" value="1048576"></property>
  187. <property name="UseLegacyDatetimeCode" value="true"></property>
  188. <property name="UseUnbufferedInput" value="true"></property>
  189. <property name="AllowLoadLocalInfile" value="true"></property>
  190. <property name="ReadFromMasterWhenNoSlaves" value="false"></property>
  191. <property name="AutoReconnectForPools" value="false"></property>
  192. <property name="TcpKeepAlive" value="true"></property>
  193. <property name="ClobberStreamingResults" value="false"></property>
  194. <property name="User" value="root"></property>
  195. </jdbc-connection-pool>
  196. <jdbc-resource pool-name="MySQLPool" jndi-name="jdbc/tutorialsDS"></jdbc-resource>

还要在<server>...</server>标签中添加以下行

  1. <resource-ref ref="jdbc/tutorialsDS"></resource-ref>

谢谢阅读。 如果您对许多配置属性有任何疑问或建议,请使用下面的注释部分。