无法将 mysql 驱动程序与 Wildfly 9.0.2 一起使用,但它似乎已正确加载
Posted
技术标签:
【中文标题】无法将 mysql 驱动程序与 Wildfly 9.0.2 一起使用,但它似乎已正确加载【英文标题】:Can't use mysql driver with Wildfly 9.0.2 however It seems like it's loaded correctly 【发布时间】:2016-02-08 12:53:00 【问题描述】:我正在尝试从 glassfish 切换到 wildfly,但我很难建立与 mysql db 的连接。我已将 .jar 和 module.xml 放在 /wildfly-9.0.2.Final/modules/system/layers/base/com/mysql/driver/main 下。
module.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql.driver">
<resources>
<resource-root path="mysql-connector-java-5.1.38-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
在standalone.xml 中我添加了一个条目:
<driver name="mysql" module="com.mysql.driver">
<driver-class>com.mysql.jdbc.Driver</driver-class>
</driver>
有趣的部分来了,当我运行 ./standalnole.sh 时,完全没有错误。它说 mysql 驱动程序已启动,但在数据源下的管理界面上 - 检测到驱动程序我没有看到它,只是原来的 h2 驱动程序。
[0m13:22:59,551 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) WFLYJCA0018: Started Driver service with driver-name = mysql
你知道解决这个问题的方法吗?
【问题讨论】:
你是不是偶然截屏了?我看到它没有问题。 您是否按照 Wildfly 9 文档DataSource configuration 中提到的步骤进行操作? 您可能在管理界面中看不到它,因为它没有被使用。您是否尝试添加需要它的数据源? 【参考方案1】:我使用命令行界面安装了 postgresql 驱动程序和模块。它最终出现在 .../wildfly-9.0.2.Final/modules/org/postgresql/main/
。那是一个与您使用的不同的地方,但我不知道这是否是这里的问题。
您的 xml 对我来说看起来不错,但驱动程序 jar 和 module.xml 文件可能不在正确的位置。尝试使用cli安装它。以下是我安装驱动程序并为其创建数据源的方式:
module add --name=org.postgresql --resources=/Users/jonmartinsolaas/Downloads/postgresql-9.4.1207.jar --dependencies=javax.api,javax.transaction.api
添加模块时,jar 文件被复制到 wildfly。如果您需要多个罐子,请使用 : 作为列表分隔符。
data-source add \
--name=myDS \
--driver-name=postgresql \
--jndi-name=java:jboss/datasources/myDS \
--connection-url="jdbc:postgresql://localhost/my-db" \
--user-name=username \
--password=secret \
--use-ccm=false \
--max-pool-size=25 \
--blocking-timeout-wait-millis=5000 \
--new-connection-sql="set datestyle = ISO, European;" \
--check-valid-connection-sql="select 1" \
--enabled=true
如果您需要 XA 数据源:
batch
xa-data-source add \
--name=mydsXA \
--driver-name=postgresql \
--jndi-name=java:jboss/datasources/mydsXA \
--user-name=username \
--password=secret \
--recovery-username= username \
--recovery-password = secret \
--check-valid-connection-sql="select 1" \
--use-ccm=false \
--max-pool-size=25 \
--blocking-timeout-wait-millis=5000 \
--new-connection-sql="set datestyle = ISO, European;" \
--enabled=true
/subsystem=datasources/xa-data-source=paddaXA/xa-datasource-properties=ServerName:add(value=localhost)
/subsystem=datasources/xa-data-source=paddaXA/xa-datasource-properties=PortNumber:add(value=5432)
/subsystem=datasources/xa-data-source=paddaXA/xa-datasource-properties=DatabaseName:add(value=my-db)
run-batch
请注意,XA 定义作为批处理(某种事务)运行,因此您必须使用run-batch
“提交”。
【讨论】:
并且:正如 jersey-city-ninja 所说,您尚未配置数据源。它是显示在 widlfly html 控制台中的数据源,而不是驱动程序。驱动可能已经安装好了,你现在只需要配置数据源。【参考方案2】:我看到了几个问题。首先,您没有部署它。最简单的方法是将mysql-connector-java-<version>.jar
放入<wildfly dir>/standalone/deployments
。
其次,您没有在standalone.xml 中配置数据源。比如:
<subsystem xmlns="urn:jboss:domain:datasources:2.0">
<datasources>
<datasource jta="true" jndi-name="java:/MySQLDataSource" pool-name="MySQLDataSource" enabled="true" use-java-context="true" spy="false" use-ccm="true">
<connection-url>jdbc:mysql://localhost:3306/mydatabase</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver>mysql-connector-java-<my version>.jar</driver>
<pool>
<allow-multiple-users>false</allow-multiple-users>
</pool>
<security>
<user-name>xxx</user-name>
<password>xxx</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
<timeout>
<set-tx-query-timeout>false</set-tx-query-timeout>
<blocking-timeout-millis>0</blocking-timeout-millis>
<idle-timeout-minutes>0</idle-timeout-minutes>
<query-timeout>0</query-timeout>
<use-try-lock>0</use-try-lock>
<allocation-retry-wait-millis>0</allocation-retry-wait-millis>
</timeout>
<statement>
<track-statements>NOWARN</track-statements>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
</datasources>
</subsystem>
【讨论】:
以上是关于无法将 mysql 驱动程序与 Wildfly 9.0.2 一起使用,但它似乎已正确加载的主要内容,如果未能解决你的问题,请参考以下文章
带有 PostgreSQL 9.4 数据源的 WildFly 10 部署应用程序时出错
如何将 Wildfly 9 的默认 SessionManager 替换为所有 Web 应用程序的自定义实现?