继续上个星期的问题:problem configure JBoss to work with JNDI
我试图在JBoss中绑定数据源,并在我的应用程序中使用它。在我的挣扎中,我已经设法通过以下方式避免了javax.naming.NameNotFoundException:
new InitialContext().lookup(connection);中的使用而不是将连接名从:'jndi- name‘更改为'java:jndi-name',而不是new JndiObjectFactoryBean().setJndiName(connection);
现在的问题是,我从查找得到的数据是空。我创建了数据源文件:
<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>并将其置于\server\default\部署\oracle-ds.xml下面。
我在运行时得到了行:
18:37:56,560 INFO ConnectionFactoryBindingService ConnectionFactoryBindingService ConnectionManager 'jb oss.jca:service=DataSourceBinding,name=bilby‘到JNDI名称'java:bilby’
所以我的问题是-为什么我的数据源为空?
发布于 2010-05-16 09:53:32
首先,我只想确定你说
将连接名从:'jndi- name‘更改为'java:jndi-name’。
你是说java:bilby对吧?
我不清楚为什么会发生这种情况,但我可以提出一个解决办法。
在oracle-ds.xml元素之后,向<jndi-name>添加以下行:
<use-java-context>false</use-java-context>在部署它时,它应该从JNDI绑定中删除java:前缀。然后,您应该能够使用:
new InitialContext().lookup("bilby")把你的DataSource拿回来。
发布于 2010-05-16 10:28:59
首先,我建议查看JBOSS_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>下面的查找只起作用:
DataSource ds = null;
Connection conn = null;
try {
ds = (DataSource) new InitialContext().lookup("java:/DefaultDS");
conn = ds.getConnection();
// ...
conn.close();
} catch (Exception e) {
// handle me
}如果这并不适用于您,请澄清您要传递给lookup方法的确切内容。
https://stackoverflow.com/questions/2843218
复制相似问题