问题配置JBoss使用JNDI

时间:2010-05-13 15:53:39

标签: java jboss jndi

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

  1. 我创建了数据源文件 oracle-ds.xml ,用相关的xml元素填充它:
  2. <datasources>
       <local-tx-datasource>
         <jndi-name>bilby</jndi-name>
         ...
        </local-tx-datasource>
    </datasources>
    

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

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

    2. 比在我的申请中执行:

    3.   

      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:服务= DataSourceBinding,名称= bilby”   到JNDI名称'java:bilby'

      那么我的配置问题是什么?我认为可能是JBoss首先加载并运行我的应用程序的.war文件,然后才加载包含我的数据源定义的oracle-ds.xml。 问题是它们都位于同一个文件夹中。 有没有办法定义加载它们的优先级,或者这根本不是问题。

      有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您应该使用此类构造来调用Datasource:java:bilby。

您可以在此处详细了解:

Naming and Directory (JNDI) - JBOSS jndi Datasource: jdbc not bound

答案 1 :(得分:0)

要检查数据源在JNDI树中的绑定方式,您应该使用jmx-console http://localhost8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss%3Aservice%3DJNDIView 并调用list()方法。

数据源在“jdbc”下注册。在你的情况下“jdbc / bilby”

编辑:这是一个没有春天对我有用的例子。 现在发现这个example注入了一个更完整的JNDI名称。

<bean id="idDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/bilby" />
</bean>