Java 配置JBoss与JNDI一起使用时出现问题(2)

Java 配置JBoss与JNDI一起使用时出现问题(2),java,jboss,jndi,Java,Jboss,Jndi,继上周的问题之后: 我试图在JBoss中绑定数据源,并在我的应用程序中使用它。在我的努力中,我已经通过: 1.在javanewinitialcontext()中使用查找(连接) 而不是新建JndiObjectFactoryBean().setJndiName(连接) 2.将连接名称从“jndi名称”更改为“java:jndi名称” 现在的问题是,我从查找中获得的datasouce是null。 我创建了datsource文件: <datasources> <loca

继上周的问题之后:

我试图在JBoss中绑定数据源,并在我的应用程序中使用它。在我的努力中,我已经通过:
1.在java
newinitialcontext()中使用查找(连接)

而不是
新建JndiObjectFactoryBean().setJndiName(连接)
2.将连接名称从“jndi名称”更改为“java:jndi名称”

现在的问题是,我从查找中获得的datasouce是null。 我创建了datsource文件:

 <datasources>  
   <local-tx-datasource>
    <jndi-name>bilby</jndi-name>
    <connection-url>jdbc:oracle:myURL</connection-url>
    <driver-class>oracle.jdbc.OracleDriver </driver-class>
    <user-name>myUsername</user-name>
    <password>myPassword</password>        
    <exception-sorter-class- name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>

            <metadata>
         <type-mapping>Oracle9i</type-mapping>
      </metadata>   
</local-tx-datasource>

</datasources>

兔耳袋狸
jdbc:oracle:myURL
oracle.jdbc.OracleDriver
我的用户名
我的密码
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
Oracle9i
并将其置于\server\default\deploy\oracle-ds.xml下
在运行期间,我得到一行:

18:37:56560信息 [ConnectionFactoryBindingService] 绑定连接管理器'jb oss.jca:service=DataSourceBinding,name=bilby' 到JNDI名称“java:bilby”


所以我的问题是-为什么我的数据源为null??

首先,我想确定当你说

将连接名称更改为: “jndi名称”到“java:jndi名称”

你真的是指
java:bilby
,对吗

我不确定为什么会发生这种情况,但我可以建议一种解决方法

元素之后,将以下行添加到您的
oracle ds.xml

<use-java-context>false</use-java-context>

首先,我建议查看
JBOSS\u DIST/docs/examples/jca
中提供的所有配置选项(包括池大小参数)的示例

其次,我使用
hsqldb ds.xml
中配置的默认数据源进行了快速测试,其定义如下:

<datasources>
   <local-tx-datasource>

      <!-- The jndi name of the DataSource, it is prefixed with java:/ -->
      <!-- Datasources are not available outside the virtual machine -->
      <jndi-name>DefaultDS</jndi-name>

      ...

</datasource>

如果这不适合您,也许可以明确说明您将传递给
查找
方法的内容。

它不起作用。即使在将“使用java上下文”添加到oracle-ds.xml文件查找(“bibly”)中后,也会导致jdbc未绑定异常
和查找(“java:bilby”)返回null objectI。我看到Jboss也打印以下信息消息,可能与此问题有关?13:37:13870信息[STDOUT]警告-Oracle9方言已被弃用;请改用Oracle9iDialect或Oracle10gDialante。可能存在一个安全问题,不允许应用程序自动接收java资源,我还需要配置其他东西来允许它?我忘了提到我正在使用JBoss版本4.2.3。GA@Spiderman这个警告只是说这个Hibernate方言是已弃用,仅此而已,与您的问题无关。哦,顺便说一下,我在JBoss 4.2.3.GA上运行了我的答案代码。我不能使用默认数据源,因为它不适合连接Oracle数据库。第二,当我执行查找(“bilby”)时,我得到javax.naming.NameNotFoundException:jdbc未绑定,当我执行查找(“java:bilby”)时,它返回nullobject@Spiderman这只是一个示例,如果您想连接到Oracle,显然不会使用HSQLDB的数据源。。。我们的想法是将重点放在XML注释上,并向您展示一段工作代码。我在尝试查找“java:/DefaultDS”时也会得到null值,即使该资源在java命名空间下可用。为什么?也许我不需要使用空构造函数而是使用一些环境来初始化InitialContext?@Spiderman:如果你在JBoss中运行你的应用程序,那就没有必要了。您正在尝试从JBoss外部获取此数据源吗?
<datasources>
   <local-tx-datasource>

      <!-- The jndi name of the DataSource, it is prefixed with java:/ -->
      <!-- Datasources are not available outside the virtual machine -->
      <jndi-name>DefaultDS</jndi-name>

      ...

</datasource>
DataSource ds = null;
Connection conn = null;
try {
    ds = (DataSource) new InitialContext().lookup("java:/DefaultDS");
    conn = ds.getConnection();
    // ...
    conn.close();
} catch (Exception e) {
    // handle me
}