问题配置JBoss使用JNDI

我试图在我的JBoss上运行的应用程序中使用JNDI绑定到数据库的连接。 我做了以下事情:

  1. 我创建了数据源文件oracle-ds.xml ,用相关的xml元素填充它:
  bilby ...   

并将其放在文件夹\ server \ default \ deploy中

  1. 添加了相关的oracle jar文件

  2. 比我在我的申请表中所做的:

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名称。