Именование источника данных JBossEAP 6.2 против Web Logic

Я переношу набор связанных приложений из 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 решает проблему, но я ищу решение через конфигурацию, а не через кодирование, если есть такое решение.


person Steve Cohen    schedule 19.08.2014    source источник
comment
Каково значение dataSource? Это должно быть java:jboss/datasources/mydatasource, так как это имя, которое вы ему дали. При запуске сервера вы должны увидеть список связанных имен источников данных в журналах.   -  person James R. Perkins    schedule 20.08.2014
comment
Да, это проблема. каким-то образом в Web Logic InitialContext смог разрешить только mydatasource без каких-либо предварительных шаблонов. Я бы не стал менять код, но, возможно, придется. Сделать это java:jboss/datasources/mydatasource достаточно легко решает проблему, но я искал какой-то способ справиться с этим с помощью конфигурации, а не кодирования, поскольку мне, возможно, придется делать один и тот же мод в сотнях мест.   -  person Steve Cohen    schedule 20.08.2014


Ответы (1)


Способ сделать это правильно с помощью конфигурации - использовать

java:comp/env/jdbc/myDataSource

затем используйте resource-ref в web.xml, чтобы сопоставить его с объявленным источником данных, и используйте weblogic.xml или jboss-web.xml, чтобы фактически сопоставить его с реальным

в консоли администратора weblogic, когда вы определяете источник данных, это может быть jdbc/realDataSource

путь JNDI Tomcat против Jboss

Для веб-логики http://docs.oracle.com/cd/E13222_01/wls/docs103/jdbc_admin/packagedjdbc.html

person Kalpesh Soni    schedule 19.08.2014
comment
@Kalpesh_Soni: Спасибо. Я заинтригован вашей ссылкой на путь JNDI Tomcat и ссылку Jboss в конкретном варианте 2, но у меня есть один вопрос: на этой странице не упоминается, к какой версии JBoss она относится. Есть ли что-нибудь, что не будет работать с JBoss EAP 6.2? - person Steve Cohen; 20.08.2014
comment
Я должен был упомянуть аннотации, да, при переносе старых приложений вы должны использовать аннотации как можно больше и использовать xml все меньше и меньше, насколько это возможно, jboss eap 6+ сертифицирован для java ee 6, а @ Resource @ EJB @ WebServlet будет работа - вот общая картина mgreau.com/posts/2013/12/10/ - person Kalpesh Soni; 20.08.2014
comment
могут быть внедрены различные типы ресурсов docs.oracle.com/javaee/6 /tutorial/doc/bncjk.html - person Kalpesh Soni; 20.08.2014
comment
@Kalpesh_Soni: Вы ответили правильно, хотя в конечном итоге мы НЕ используем аннотации, поскольку большая часть кода, который мы переносим, ​​позволяет выполнять динамический поиск имени источника данных переменной во время выполнения, что несовместимо с аннотацией. Хотя этот код может и, вероятно, должен быть переписан, это не так уж и важно. Часть, которую мы будем использовать, заключается в использовании jboss-web.xml для управления различными соглашениями об именах между WebLogic и JBoss, что послужило мотивом для моего вопроса. Спасибо. - person Steve Cohen; 22.08.2014