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

в продолжение вопроса с прошлой недели: проблема с настройкой JBoss для работы с JNDI

Я пытаюсь связать источник данных в JBoss и использовать его в своем приложении. В моей борьбе мне уже удалось избежать исключения javax.naming.NameNotFoundException:
1. Использование в Java new InitialContext().lookup(connection);
вместо new JndiObjectFactoryBean().setJndiName(connection);
2. изменив имя соединения с: 'jndi-name' на 'java: jndi-name'

Теперь проблема в том, что источник данных, который я получаю из поиска, null . Я создал файл источника данных:

 <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 ИНФОРМАЦИЯ [ConnectionFactoryBindingService] Связанный ConnectionManager 'jb oss.jca: Сервис = DataSourceBinding, имя = Билби» на имя JNDI "Ява: Билби"

Итак, мой вопрос - почему я получаю нулевое значение в качестве источника данных ???

Ответы [ 2 ]

1 голос
/ 16 мая 2010

Во-первых, я просто хочу убедиться, что, когда вы сказали

изменение имени соединения с: от jndi-name до java: jndi-name

что ты действительно имел в виду java:bilby, верно?

Я не совсем уверен, почему это происходит, но я могу предложить обходной путь.

Добавьте следующую строку к вашему oracle-ds.xml после элемента <jndi-name>:

<use-java-context>false</use-java-context>

При развертывании он должен удалить префикс java: из привязки JNDI. После этого вы сможете использовать:

new InitialContext().lookup("bilby")

и получите обратно DataSource.

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

Прежде всего, я предлагаю посмотреть образцы, доступные в 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.

...