问题配置JBoss使用JNDI
我试图在我的JBoss上运行的应用程序中使用JNDI绑定到数据库的连接。 我做了以下事情:
- 我创建了数据源文件oracle-ds.xml ,用相关的xml元素填充它:
bilby ...
并将其放在文件夹\ server \ default \ deploy中
-
添加了相关的oracle jar文件
-
比我在我的申请表中所做的:
JndiObjectFactoryBean factory = new JndiObjectFactoryBean();
factory.setJndiName("bilby"); try{ factory.afterPropertiesSet(); dataSource = factory.getObject(); } catch(NamingException ne) { ne.printStackTrace(); }
这会导致错误:
javax.naming.NameNotFoundException:bilby没有绑定
然后在发生此错误后的输出中我看到了这一行:
18:37:56,560 INFO [ConnectionFactoryBindingService]绑定ConnectionManager’jb oss.jca:service = DataSourceBinding,name = bilby’到JNDI名称’java:bilby’
那么我的配置问题是什么? 我认为可能是JBoss首先加载并运行我的应用程序的.war文件,然后才加载包含我的数据源定义的oracle-ds.xml。 问题是它们都位于同一个文件夹中。 有没有办法定义加载它们的优先级,或者这可能根本不是问题。
任何想法?
您应该使用这样的构造来调用Datasource:java:bilby。
你可以在这里阅读更多相关信息:
命名和目录(JNDI) – JBOSS jndi数据源:jdbc没有绑定
要检查数据源在JNDI树中的绑定方式,您应该使用jmx-console
http:// localhost8080 / jmx-console / HtmlAdaptor?action = inspectMBean&name = jboss%3Aservice%3DJNDIView并调用list()
方法。
数据源在“jdbc”下注册。 在你的情况下“jdbc / bilby”
编辑:这是一个没有spring对我有用的例子。 现在发现这个例子注入了一个更完整的JNDI名称。