使用本地数据源而不是在 standalone.xml 中指定它 (WildFly)
Use local datasource instead of specifying it in standalone.xml (WildFly)
我通常会在 standalone.xml 中列出我的数据源,例如(只是一个示例):
<datasource jta="false" jndi-name="java:jboss/datasources/myDB" pool-name="myDB" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://mysql/myDB</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>password</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
MySQL 驱动程序已安装到 WildFly。我知道可以将数据源添加到 webapp --> WEB-INF --> my-ds.xml
但是当我将我的构建 war 部署到 WildFly 时,我得到
16:59:15,121 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 3) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "poc")]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.mysql"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.data-source.\"jboss.naming.context.java.jboss.datasources.testDB\" is missing [jboss.jdbc-driver.mysql]"]
}
16:59:15,124 ERROR [org.jboss.as.server] (management-handler-thread - 3) WFLYSRV0021: Deploy of deployment "poc.war" was rolled back with the following failure message:
{
"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.mysql"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.data-source.\"jboss.naming.context.java.jboss.datasources.testDB\" is missing [jboss.jdbc-driver.mysql]"]
}
我的问题是:
如何将我的数据源定义从 standalone.xml 移动到我的项目并使其在部署到 WildFly 时工作
不是将数据源放在应用程序中,-ds.xml您可以将其放在部署目录中。
已经想出解决问题的方法了。
首先是添加一个 boss-deployment-structure.xml
(到 WEB-INF
f.e。)其中必须指定驱动程序:
<?xml version="1.0"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="com.mysql" services="export">
<imports>
<include path="META-INF**"/>
<include path="com**"/>
<!-- assuming user of the driver is com.something -->
</imports>
</module>
</dependencies>
</deployment>
</jboss-deployment-structure>
然后我通过 -ds.xml
模式添加我的数据源。
(WildFly 10 说实际上它已被弃用...)
在我的 persistence.xml
中,我现在可以使用数据源了。
我通常会在 standalone.xml 中列出我的数据源,例如(只是一个示例):
<datasource jta="false" jndi-name="java:jboss/datasources/myDB" pool-name="myDB" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://mysql/myDB</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>password</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
MySQL 驱动程序已安装到 WildFly。我知道可以将数据源添加到 webapp --> WEB-INF --> my-ds.xml
但是当我将我的构建 war 部署到 WildFly 时,我得到
16:59:15,121 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 3) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "poc")]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.mysql"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.data-source.\"jboss.naming.context.java.jboss.datasources.testDB\" is missing [jboss.jdbc-driver.mysql]"]
}
16:59:15,124 ERROR [org.jboss.as.server] (management-handler-thread - 3) WFLYSRV0021: Deploy of deployment "poc.war" was rolled back with the following failure message:
{
"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.mysql"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.data-source.\"jboss.naming.context.java.jboss.datasources.testDB\" is missing [jboss.jdbc-driver.mysql]"]
}
我的问题是:
如何将我的数据源定义从 standalone.xml 移动到我的项目并使其在部署到 WildFly 时工作
不是将数据源放在应用程序中,-ds.xml您可以将其放在部署目录中。
已经想出解决问题的方法了。
首先是添加一个 boss-deployment-structure.xml
(到 WEB-INF
f.e。)其中必须指定驱动程序:
<?xml version="1.0"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="com.mysql" services="export">
<imports>
<include path="META-INF**"/>
<include path="com**"/>
<!-- assuming user of the driver is com.something -->
</imports>
</module>
</dependencies>
</deployment>
</jboss-deployment-structure>
然后我通过 -ds.xml
模式添加我的数据源。
(WildFly 10 说实际上它已被弃用...)
在我的 persistence.xml
中,我现在可以使用数据源了。