[英]problem configure JBoss to work with JNDI(2)
继续上周的问题 : 问题配置JBoss使用JNDI
我正在尝试在JBoss中绑定数据源并在我的应用程序中使用它。 在我的努力中,我已经设法通过以下方式避免javax.naming.NameNotFoundException:
1.在java中使用new InitialContext().lookup(connection);
而不是new JndiObjectFactoryBean().setJndiName(connection);
2.将连接名称从''jndi-name'更改为'java:jndi-name'
现在的问题是我从查找中得到的数据是空的 。 我创建了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>
并将其放在\\ server \\ default \\ deploy \\ oracle-ds.xml下
我在运行时获得了这一行:
18:37:56,560 INFO [ConnectionFactoryBindingService]绑定ConnectionManager'jb oss.jca:service = DataSourceBinding,name = bilby'到JNDI名称'java:bilby'
所以我的问题是 - 为什么我得到null作为我的数据源?
首先,我只想确定你说的时候
将连接名称从''jndi-name'更改为'java:jndi-name'
那你真的是指java:bilby
,对吗?
我不确定为什么会发生这种情况,但我可以提出一个解决方法。
在<jndi-name>
元素后面的oracle-ds.xml
添加以下行:
<use-java-context>false</use-java-context>
部署它时,它应该从JNDI绑定中删除java:
前缀。 然后你应该能够使用:
new InitialContext().lookup("bilby")
并恢复你的DataSource
。
首先,我建议查看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
方法的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.