使用 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>

解决了