是否可以在 Wildfly 中将数据源部署描述符与驱动程序模块一起使用?
Is it possible to use a datasource deployment descriptor with a driver module in Wildfly?
我无法使用“*-ds.xml”部署描述符配置我的数据源,并将数据库驱动程序安装为模块。
数据源 *-ds.xml 文件仅在我将数据库驱动程序直接部署为 jar 时才有效。
我认为如果您选择将驱动程序安装为模块,则必须直接在 standalone.xml 中配置数据源。
我想要解决方案驱动模块+部署描述符。
为了使您的模块对您的应用程序可见,您需要将模块导入到您的应用程序中。您的应用程序的 WEB-INF 中需要 jboss-deployment-structure.xml,如下所示:
<?xml version="1.0"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.postgresql" services="export">
<imports>
<include path="META-INF**"/>
<include path="org**"/>
<!-- assuming package of the driver is org.something -->
</imports>
</module>
</dependencies>
</deployment>
</jboss-deployment-structure>
之后,模块和驱动程序应该对您的应用程序以及您的 *-ds.xml.
可见
这是在 *-ds.xml 中表示您想使用模块中的驱动程序的方式:
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
(使用 postgresql 配置的示例,因为您似乎正在使用它)
编辑:使用以下 postgresql-ds.xml:
进行测试
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_1.xsd">
<datasource jndi-name="java:jboss/datasources/PostgeSQLDB " pool-name="PostgreSQLPool">
<connection-url>jdbc:postgresql://localhost:5432/example
</connection-url>
<driver>postgres</driver>
<pool>
<max-pool-size>30</max-pool-size>
</pool>
<security>
<user-name>postgresql</user-name>
<password>postgresql</password>
</security>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource
</xa-datasource-class>
</driver>
</drivers>
</datasources>
然而,对于 Wildfly 10,它给出了这个:
20:17:22,895 WARN [org.jboss.as.connector] (MSC service thread 1-2) WFLYJCA0091: -ds.xml file deployments are deprecated. Support
may be removed in a future version.
20:17:23,058 WARN [org.jboss.as.connector.deployer.dsdeployer] (MSC service thread 1-1) WFLYJCA0012: <drivers/> in standalone -ds
.xml deployments aren't supported: Ignoring my-spring-app.war
我也在 Wildfly 8.1 上测试过,消息是一样的。因此,似乎不支持在 -ds.xml 中部署数据源配置,您需要在 standalone.xml 中创建它,并引用那里的模块。 This forum link 似乎证实了这一点。
link 还说您可以使用 .ear/.war 描述符定义数据源,无论如何这可能更适合您的用例。我使用 .war 文件和位于 here, and this answer says you can do the same with .ears 的 web.xml 创建了一个示例。可以说它甚至比 -ds.xml 更好,因为它是一个标准。
多亏了 eis,我通过将 jboss-deployment-descriptor 放在 ear 存档的 META-INF 文件夹中使其工作:-)
无论如何,现在我必须将驱动程序直接放在 standalone.xml 文件中:
<driver name="postgresql-9_2-1002_jdbc4_jar" module="org.postgresql">
<driver-class>org.postgresql.Driver</driver-class>
</driver>
通过 jar 部署,我可以将其直接放入 *-ds.xml 文件中。我认为这是可能的。我不放弃。
我无法使用“*-ds.xml”部署描述符配置我的数据源,并将数据库驱动程序安装为模块。 数据源 *-ds.xml 文件仅在我将数据库驱动程序直接部署为 jar 时才有效。 我认为如果您选择将驱动程序安装为模块,则必须直接在 standalone.xml 中配置数据源。 我想要解决方案驱动模块+部署描述符。
为了使您的模块对您的应用程序可见,您需要将模块导入到您的应用程序中。您的应用程序的 WEB-INF 中需要 jboss-deployment-structure.xml,如下所示:
<?xml version="1.0"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.postgresql" services="export">
<imports>
<include path="META-INF**"/>
<include path="org**"/>
<!-- assuming package of the driver is org.something -->
</imports>
</module>
</dependencies>
</deployment>
</jboss-deployment-structure>
之后,模块和驱动程序应该对您的应用程序以及您的 *-ds.xml.
可见这是在 *-ds.xml 中表示您想使用模块中的驱动程序的方式:
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
(使用 postgresql 配置的示例,因为您似乎正在使用它)
编辑:使用以下 postgresql-ds.xml:
进行测试<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_1.xsd">
<datasource jndi-name="java:jboss/datasources/PostgeSQLDB " pool-name="PostgreSQLPool">
<connection-url>jdbc:postgresql://localhost:5432/example
</connection-url>
<driver>postgres</driver>
<pool>
<max-pool-size>30</max-pool-size>
</pool>
<security>
<user-name>postgresql</user-name>
<password>postgresql</password>
</security>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource
</xa-datasource-class>
</driver>
</drivers>
</datasources>
然而,对于 Wildfly 10,它给出了这个:
20:17:22,895 WARN [org.jboss.as.connector] (MSC service thread 1-2) WFLYJCA0091: -ds.xml file deployments are deprecated. Support
may be removed in a future version.
20:17:23,058 WARN [org.jboss.as.connector.deployer.dsdeployer] (MSC service thread 1-1) WFLYJCA0012: <drivers/> in standalone -ds
.xml deployments aren't supported: Ignoring my-spring-app.war
我也在 Wildfly 8.1 上测试过,消息是一样的。因此,似乎不支持在 -ds.xml 中部署数据源配置,您需要在 standalone.xml 中创建它,并引用那里的模块。 This forum link 似乎证实了这一点。
link 还说您可以使用 .ear/.war 描述符定义数据源,无论如何这可能更适合您的用例。我使用 .war 文件和位于 here, and this answer says you can do the same with .ears 的 web.xml 创建了一个示例。可以说它甚至比 -ds.xml 更好,因为它是一个标准。
多亏了 eis,我通过将 jboss-deployment-descriptor 放在 ear 存档的 META-INF 文件夹中使其工作:-)
无论如何,现在我必须将驱动程序直接放在 standalone.xml 文件中:
<driver name="postgresql-9_2-1002_jdbc4_jar" module="org.postgresql">
<driver-class>org.postgresql.Driver</driver-class>
</driver>
通过 jar 部署,我可以将其直接放入 *-ds.xml 文件中。我认为这是可能的。我不放弃。