使用 Oracle 数据源进行 Wildfly 部署
Wildfly Deployment with Oracle Datasource
我正在尝试为 JSF-EJB 项目部署 Wildfly 10。
我在 eclipse(4.4.0) 的库中定义了 oracle.jdeveloper.db.connection.jar 并放置了 ojdbc6.jar在以下路径C:\wildfly\wildfly-10.0.0.Final\modules\system\layers\base\com\oracle\main module.xml.
我已成功测试来自 localhost:9990/console
的数据源
下面是我的web.xml参考:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>java:/OracleDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
我在 standalone.xml
中使用以下数据源
<datasources>
<datasource jndi-name="java:/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true">
<connection-url>jdbc:oracle:thin:@localhost:1521:xe</connection-url>
<driver>oracle</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>Example</user-name>
<password>XXX</password>
</security>
</datasource>
<drivers>
<driver name="oracle" module="com.oracle">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>
</drivers>
</datasources>
我在 module.xml 中使用以下行:
<module xmlns="urn:jboss:module:1.3" name="com.oracle">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
在部署过程中,我收到以下 2 个错误。两者都与数据源相关:
17:20:19,404 ERROR [org.jboss.msc.service.fail] (MSC service thread
1-1) MSC000001: Failed to start service
jboss.deployment.unit."test11_R_Copy.war".INSTALL:
org.jboss.msc.service.StartException in service
jboss.deployment.unit."test11_R_Copy.war".INSTALL: WFLYSRV0153: Failed
to process phase INSTALL of deployment "test11_R_Copy.war" at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745) Caused by:
java.lang.IllegalArgumentException: WFLYEE0047: Incompatible
conflicting binding at java:/OracleDS source: lookup
(java:comp/DefaultDataSource) at
org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.addJndiBinding(ModuleJndiBindingProcessor.java:238)
at
org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:107)
at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147)
... 5 more
以下错误也涉及数据源。
17:20:19,419 ERROR [org.jboss.as.controller.management-operation]
(DeploymentScanner-threads - 2) WFLYCTL0013: Operation ("deploy")
failed - address: ([("deployment" => "test11_R_Copy.war")]) - failure
description: {
"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"test11_R_Copy.war\".INSTALL" =>
"org.jboss.msc.service.StartException in service
jboss.deployment.unit.\"test11_R_Copy.war\".INSTALL: WFLYSRV0153:
Failed to process phase INSTALL of deployment \"test11_R_Copy.war\"
> Caused by: java.lang.IllegalArgumentException: WFLYEE0047: Incompatible conflicting binding at java:/OracleDS source: lookup
(java:comp/DefaultDataSource)"},
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.deployment.unit.\"test11_R_Copy.war\".batch.environment is missing [jboss.deployment.unit.\"test11_R_Copy.war\".beanmanager]",
"jboss.deployment.unit.\"test11_R_Copy.war\".weld.weldClassIntrospector
is missing [jboss.deployment.unit.\"test11_R_Copy.war\".beanmanager]"
我没有使用 persistence.xml。
我哪里做错了?
谢谢。
在 web.xml
中注释 resource-ref
元素,一切正常。
<!--
<资源参考>
<description>数据库连接</description>
<res-ref-name>java:/OracleDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type><br>
<res-auth>容器</res-auth><br>
<res-sharing-scope>可共享</res-sharing-scope>
</resource-ref><br>
-->
通过将 <resource-ref>
替换为 <resource-env-ref>
解决了
我正在尝试为 JSF-EJB 项目部署 Wildfly 10。
我在 eclipse(4.4.0) 的库中定义了 oracle.jdeveloper.db.connection.jar 并放置了 ojdbc6.jar在以下路径C:\wildfly\wildfly-10.0.0.Final\modules\system\layers\base\com\oracle\main module.xml.
我已成功测试来自 localhost:9990/console
的数据源下面是我的web.xml参考:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>java:/OracleDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
我在 standalone.xml
中使用以下数据源 <datasources>
<datasource jndi-name="java:/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true">
<connection-url>jdbc:oracle:thin:@localhost:1521:xe</connection-url>
<driver>oracle</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>Example</user-name>
<password>XXX</password>
</security>
</datasource>
<drivers>
<driver name="oracle" module="com.oracle">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>
</drivers>
</datasources>
我在 module.xml 中使用以下行:
<module xmlns="urn:jboss:module:1.3" name="com.oracle">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
在部署过程中,我收到以下 2 个错误。两者都与数据源相关:
17:20:19,404 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.deployment.unit."test11_R_Copy.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."test11_R_Copy.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "test11_R_Copy.war" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: WFLYEE0047: Incompatible conflicting binding at java:/OracleDS source: lookup (java:comp/DefaultDataSource) at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.addJndiBinding(ModuleJndiBindingProcessor.java:238) at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:107) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147) ... 5 more
以下错误也涉及数据源。
17:20:19,419 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "test11_R_Copy.war")]) - failure description: { "WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"test11_R_Copy.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"test11_R_Copy.war\".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment \"test11_R_Copy.war\" > Caused by: java.lang.IllegalArgumentException: WFLYEE0047: Incompatible conflicting binding at java:/OracleDS source: lookup (java:comp/DefaultDataSource)"}, "WFLYCTL0180: Services with missing/unavailable dependencies" => [ "jboss.deployment.unit.\"test11_R_Copy.war\".batch.environment is missing [jboss.deployment.unit.\"test11_R_Copy.war\".beanmanager]", "jboss.deployment.unit.\"test11_R_Copy.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"test11_R_Copy.war\".beanmanager]"
我没有使用 persistence.xml。
我哪里做错了?
谢谢。
在 web.xml
中注释 resource-ref
元素,一切正常。
<!--
<资源参考>
<description>数据库连接</description>
<res-ref-name>java:/OracleDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type><br>
<res-auth>容器</res-auth><br>
<res-sharing-scope>可共享</res-sharing-scope>
</resource-ref><br>
-->
通过将 <resource-ref>
替换为 <resource-env-ref>