安装为部署时的jboss-eap-6.1 oracle驱动程序定义

时间:2014-09-05 14:16:45

标签: java oracle jdbc jboss

我有几个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在$ JBOSS_HOME / modules / system / layers / base / oracle / jdbc / main /中与相应的module.xml一起使用,一切正常。

现在客户需要安装驱动程序作为部署,所以我将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以使其再次运行:我尝试编辑驱动程序定义&#34;模块&#34;具有多个不同值的属性(ojdbc6.jar,deployment.ojdbc6.jar,oracle.jdbc.OracleDriver ...)但似乎没有&#34;匹配&#34;并且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]

有人可以提供驱动程序定义的工作示例吗?

由于

3 个答案:

答案 0 :(得分:6)

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

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

这是一个工作示例(基本上我只是已删除整个Oracle 驱动程序定义部分,并替换了 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

就是这样。

答案 1 :(得分:-1)

可能你必须以这种方式提及......

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

答案 2 :(得分:-1)

  1. 创建x1 / x2 / main
  2. 等目录
  3. 在主目录
  4. 下创建module.xml文件
  5. 将ojdbc6-11.1.1.3.0.jar保留在主目录级别
  6. 在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,某些版本无效:)