从JBoss EAP 6中的应用程序访问Oracle 10g时出错

时间:2013-12-20 12:29:08

标签: java oracle jboss

我正在开发一个简单的应用程序,它必须能够访问Oracle 10g数据库并且在JBoss EAP 6.1.0服务器下运行。我已按照official guide上给出的步骤安装Oracle驱动程序。

目前,我有以下配置文件。我添加了jboss-eap-6.1\modules\com\oracle\db\mainojdbc6.jar的文件夹module.xml,内容为:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle.db">
  <resources>
    <resource-root path="ojdbc6.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

jboss-eap-6.1\standalone\configuration\standalone.xml中,我在datasources节点中添加了以下行:

        <datasource jndi-name="java:/jdbc/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true">
            <connection-url>jdbc:oracle:thin:@10.0.6.0:1521:ORC1;DB_CLOSE_DELAY=-1</connection-url>
            <driver>oracle</driver>
            <security>
                <user-name>a</user-name>
                <password>a</password>
            </security>
        </datasource>
        <drivers>
            <driver name="oracle" module="com.oracle.db">
                <datasource-class>oracle.jdbc.driver.OracleDriver</datasource-class>
            </driver>
        </drivers>

最后,在我的Java代码中,我创建了连接:

InitialContext initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:/jdbc/OracleDS");
conexion = ds.getConnection();

执行此操作时,它会在行conexion = ds.getConnection()上给出错误:

javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/jdbc/OracleDS

我一直在网上寻找可行的解决方案但没有成功。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最后,我可以让它发挥作用!我做了什么:

  • 在standalone.xml中,我更改了这两行:

-

<datasource jndi-name="java:/jdbc/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true">
<connection-url>jdbc:oracle:thin:@10.0.6.0:1521:ORC1;DB_CLOSE_DELAY=-1</connection-url>

<datasource jndi-name="**java:jboss/OracleDS**" pool-name="OracleDS" enabled="true" use-java-context="true">
<connection-url>jdbc:oracle:thin:**@//10.0.0.110:1521/orc11.palluc.com**</connection-url>

所以我的jndi-name和url连接无效。

  • 在Java代码中,我已经改变了(考虑到以前的更改):

    DataSource ds =(DataSource)initContext.lookup(“java:/ jdbc / OracleDS”);

DataSource ds = (DataSource)initContext.lookup("java:jboss/OracleDS");

之后,它似乎工作但我仍然在ORA-01882: timezone region not found中解释了Oracle错误。我按照评论#6来解决它(似乎有比'直接修改ojdbc6.jar库更'更漂亮'的解决方案,正如本文所解释的那样),现在它按预期工作。