проблема настроить JBoss для работы с JNDI - PullRequest
3 голосов
/ 13 мая 2010

Я пытаюсь связать соединение с БД с помощью JNDI в моем приложении, которое работает на JBoss. Я сделал следующее:

  1. Я создал файл источника данных oracle-ds.xml , наполнив его соответствующими элементами xml:
<datasources>
   <local-tx-datasource>
     <jndi-name>bilby</jndi-name>
     ...
    </local-tx-datasource>
</datasources>

и поместите его в папку \ server \ default \ deploy

  1. Добавлен соответствующий файл с оракулом

  2. чем в моей заявке я выполнил:

JndiObjectFactoryBean factory = new JndiObjectFactoryBean ();

 factory.setJndiName("bilby");
 try{
     factory.afterPropertiesSet();
     dataSource = factory.getObject();
 }
 catch(NamingException ne) {
     ne.printStackTrace();
 }

и это приводит к ошибке:

javax.naming.NameNotFoundException: Билби не связан

затем на выходе после того, как произошла эта ошибка я увидел строку:

18: 37: 56 560 ИНФОРМАЦИЯ [ConnectionFactoryBindingService] Связанный ConnectionManager 'jb oss.jca: Сервис = DataSourceBinding, имя = Билби» на имя JNDI 'java: bilby'

Так в чем проблема моей конфигурации? Я думаю, что это может быть то, что JBoss сначала загружает и запускает файл .war моего приложения, и только потом он загружает файл oracle-ds.xml, содержащий мое определение источника данных. Проблема в том, что они оба расположены в одной папке. Есть ли способ определить приоритет их загрузки, или, может быть, это не проблема вообще.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 14 мая 2010

Вы должны использовать такую ​​конструкцию для вызова источника данных: java: bilby.

Подробнее об этом можно прочитать здесь:

Именование и каталог (JNDI) - JBOSS jndi Источник данных: jdbc не связан

0 голосов
/ 14 мая 2010

Чтобы проверить, как источник данных связан в дереве JNDI, вы должны использовать jmx-console http://localhost8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss%3Aservice%3DJNDIView и вызовите метод list().

Источники данных зарегистрированы под "jdbc". В вашем случае "jdbc / bilby"

РЕДАКТИРОВАТЬ: Это был пример, который работает для меня без весны. Теперь нашел этот пример , который вводит более полное имя JNDI.

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