Я переношу набор связанных приложений из WebLogic в JBoss EAP v6.2.
Я установил соединение с источником данных, используя интерфейс командной строки JBoss, и подключил его к базе данных оракула. Эта база данных имеет имя "mydatasource" и имя JNDI "java:jboss/datasources/mydatasource" в соответствии со стандартами JBoss. Я могу протестировать и проверить это соединение с базой данных.
Однако, когда я пытаюсь перенести код и запустить его, соединение не работает. Код, который работал в WebLogic, был прост:
InitialContext ic = new InitialContext() ;
DataSource ds = (DataSource)ic.lookup(dataSource) ;
со значением в источнике данных "mydatasource".
Это работало в Web Logic, но в JBoss выдает исключение NameNotFoundException.
javax.naming.NameNotFoundException: mydatasource-- service jboss.naming.context.java.mydatasource
Очевидно, что существует разница в том, как устанавливается InitialContext между двумя серверами.
Но этот порт включает в себя большое количество небольших приложений, каждое из которых подключается к источнику данных с помощью кода, подобного приведенному выше. Я не хочу переписывать весь этот код.
Есть ли способ через конфигурацию (InitialContextFactory, возможно) для определения начального контекста, чтобы код, подобный приведенному выше, работал без перезаписи, или, возможно, есть другой способ именования источника данных, который JBoss примет, что позволит коду, подобному приведенному выше, работать без перезаписи?
Или мы должны стиснуть зубы и признать, что этот код нужно переписать?
Обновление: Да, я знаю, что простая передача "java:jboss/datasources/mydatasource" в поиск InitialContext решает проблему, но я ищу решение через конфигурацию, а не через кодирование, если есть такое решение.
dataSource
? Это должно бытьjava:jboss/datasources/mydatasource
, так как это имя, которое вы ему дали. При запуске сервера вы должны увидеть список связанных имен источников данных в журналах. - person James R. Perkins   schedule 20.08.2014