【问题标题】:jboss-eap-6.1 oracle driver definition when installed as deployment作为部署安装时的 jboss-eap-6.1 oracle 驱动程序定义
【发布时间】:2014-10-30 12:44:25
【问题描述】:

我有几个 Jboss EAP 6.1 安装使用作为模块安装的 Oracle 驱动程序。

这是我在standalone.xml中使用的标准配置:

<datasource jndi-name="java:jboss/fooDatasource" pool-name="java:jboss/fooDatasource" enabled="true" use-java-context="false" >
 <connection-url>jdbc:oracle:thin:@1.2.3.4:1527/SOMEDB.foo</connection-url>
 <driver>oracle</driver>
     <security>
         <user-name>xxxxx</user-name>
             <password>xxxxxxxxx</password>
     </security>
 [...]
</datasource>
<driver name="oracle" module="oracle.jdbc">
    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
    <datasource-class>oracle.jdbc.OracleDriver</datasource-class>
</driver>

ojdbc6.jar 与相应的 module.xml 一起位于 $JBOSS_HOME/modules/system/layers/base/oracle/jdbc/main/ 中,一切正常。

现在客户需要将驱动程序安装为部署,因此我将 ojdbc6.jar 移动到 $JBOSS_HOME/standalone/deployments/ 并且从日志中看到它的部署没有错误:

[org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) JBAS010403: Deploying JDBC-compliant driver class oracle.jdbc.OracleDriver (version 11.2)
INFO  [org.jboss.as.server] (ServerService Thread Pool -- 25) JBAS018559: Deployed "ojdbc6.jar" (runtime-name : "ojdbc6.jar")

但我不知道如何编辑我的standalone.xml 以使其再次工作:我尝试使用几个不同的值(ojdbc6.jar、deployment.ojdbc6.jar、oracle.xml)编辑驱动程序定义“模块”属性。 jdbc.OracleDriver...) 但似乎没有一个“匹配”并且 Jboss 在启动时不断抛出错误:

ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 24) JBAS014613: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("jdbc-driver" => "oracle")
]) - failure description: "JBAS010441: Failed to load module for driver [ojdbc6.jar]"
[...]
INFO  [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report
JBAS014775:    New missing/unsatisfied dependencies:
  service jboss.jdbc-driver.oracle (missing) dependents: [service jboss.driver-demander.java:jboss/spiDatasource, service jboss.data-source.java:jboss/fooDatasource]

谁能提供驱动程序定义的工作示例?

谢谢

【问题讨论】:

    标签: java oracle jdbc jboss


    【解决方案1】:

    好的,我自己找到了答案。

    令人惊讶的是,我发现的所有指南都解释了如何通过 web 管理界面或 jboss-cli 进行此配置,但 Jboss 社区中似乎没有人费心解释如何手动编辑standalone.xml 来完成这项工作.

    这是一个工作示例(基本上我只是删除整个 Oracle driver 定义部分,并将 datasource 定义中的驱动程序名称替换为已部署 jar 文件的运行时名称):

    <datasource jta="false" jndi-name="java:/jdbc/fooDS" pool-name="foo-ds" use-ccm="false">
        <connection-url>jdbc:oracle:thin:@1.2.3.4:1527/SOMEDB.foo</connection-url>
        <driver-class>oracle.jdbc.OracleDriver</driver-class>
        <driver>ojdbc6.jar</driver>
    
        [...] other datasource stuff here
    
    </datasource>
    
    # DELETE FROM HERE...
    <driver name="oracle" module="oracle.jdbc">
        <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
        <datasource-class>oracle.jdbc.OracleDriver</datasource-class>
    </driver>
    # ...TO HERE
    

    就是这样。

    【讨论】:

      【解决方案2】:

      可能你不得不这样提……

      <subsystem xmlns="urn:jboss:domain:datasources:1.1">
              <datasources>
                  <datasource jndi-name="java:jboss/XXX" pool-name="XXX"     enabled="true" use-java-context="true">
                      <connection-url>jdbc:oracle:thin:@SID:PORT:DBNAME</connection-url>
                      <driver>oracle</driver>
                      <security>
                          <user-name>user</user-name>
                          <password>password</password>
                      </security>
                  </datasource>
                  <drivers>
                      <driver name="oracle" module="com.oracle">
                          <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
                          <datasource-class>oracle.jdbc.OracleDriver</datasource-class>
                      </driver>
                  </drivers>
              </datasources>
      </subsystem>
      

      【讨论】:

      • 虽然这个代码块可能会回答这个问题,但您总是应该提供一些解释为什么它会这样做。
      【解决方案3】:
      1. 创建像 x1/x2/main 这样的目录
      2. 在主目录下创建module.xml文件
      3. 将 ojdbc6-11.1.1.3.0.jar 保留在主目录级别

      在 Module.xml 中

      <module xmlns="urn:jboss:module:1.1" name="x1.x2">
      <properties>
          <property name="jboss.api" value="unsupported"/>
      </properties>
      <resources>
          <resource-root path="ojdbc6-11.1.1.3.0.jar"/>
      </resources>
      <dependencies>
          <module name="javax.api"/>
          <module name="javax.transaction.api"/>
          <module name="javax.servlet.api" optional="true"/>
      </dependencies>
      

      在 domain.xml 中

      <datasource jndi-name="java:/TestName" pool-name="TestName" enabled="true" use-java-context="true">
                          <connection-url>jdbc:oracle:thin:@ldap://xxxxx:3000/UKXXX,cn=OracleContext,dc=dcm,dc=XXXX</connection-url>
                          <driver>dps</driver>
                          <security>
                              <user-name>XXXXX</user-name>
                              <password>*****</password>
                          </security>
                      </datasource>
                      <drivers>
                          <driver name="dps" module="x1.x2">
                              <xa-datasource-class>oracle.jdbc.driver.OracleDriver</xa-datasource-class>
                          </driver>
                          </driver>
                      </drivers>
      

      尽量保留正确的 ojdbc jar,有些版本不行:)

      【讨论】:

      • 我认为您没有很好地阅读我的问题...我已经有了一个工作模块配置。我问如何摆脱它,并切换到不同的。顺便说一句,问题已经解决了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 2013-12-29
      • 1970-01-01
      • 2014-01-02
      • 2013-10-06
      • 2013-01-16
      相关资源
      最近更新 更多