У нас есть EAR, содержащий несколько банок, модуль EJB и модуль WAR. Мы хотим получить класс с JNDI InitialContext.lookup от и до того же модуля EJB.jBoss EAR-EJB jndi java: global working, java: app NameNotFoundException
В консоли jBoss мы можем увидеть java: global с приложением, модулем и всеми классами внутри модуля. Если мы сделаем подобный поиск, это сработает. Существует также раздел приложений, который включает наш EAR с модулем и всеми классами внутри.
Теперь, когда наш EAR может иметь разные исполнения и, следовательно, разные двоичные имена, мы хотели использовать java: app, чтобы пропустить HardCoded AppName. К нашему удивлению, даже если приложение java: существует в JNDI-коннекторе JBoss, оно все время генерирует исключение NameNotFoundException. Мы также пытались использовать java: comp, java: module, java: app/env/... (даже если они не показаны на консоли jBoss), но ничего, кроме портативных имен, не работает.
Кто-нибудь знает, почему это может произойти?
private static final String MY_TIMER_SINGLETON = "java:global/myear-1.0.0-SNAPSHOT/mymoduleejb/MyTimerSingleton";
//private static final String MY_TIMER_SINGLETON = "java:app/mymoduleejb/MyTimerSingleton";
InitialContext ic = new InitialContext();
MyTimerSingleton t = (MyTimerSingleton) ic
.lookup(MY_TIMER_SINGLETON);
JBoss консоль Profile-> container-> Нейминг:
java:jboss
-...
java:global
-myear-1.0.0-SNAPSHOT
-mymoduleejb
-MyTimerSingleton
-...
applications
-myear-1.0.0-SNAPSHOT
-java:app
-mymoduleear
-MyTimerSingleton
-...
EDIT 1: Дополнительная информация.
jBoss работает с использованием автономной конфигурации ha.xml.
Я пытаюсь получить Singleton через JDNI, потому что @EJB не работает в org.jboss.msc.service.Service classes.
Если я заставляю MyTimerSingleton реализовывать интерфейс @Remote или @Local, JNDI консоли JBoss становится пустым.
В любом случае, все .../окр/из списка JNDI пустые
На самом деле, я забыл сказать, что я вызываю поиск из org.jboss.msc.service.Service, поэтому я не могу сделать @EJB для ввода класса (он вводит null). Я пробовал другие решения, но я получаю одно и то же имяNotFoundException (с удаленным и локальным). Никакие новые записи не добавляются в раздел «Имена иконок консоли jBoss». – XaviGG
Вы пытались использовать java-ee (ejb-jar.xml) или дескрипторы развертывания jboss (jboss.xml) ??? –
Я создал файл ejb-jar.xml, но ничего не изменилось. Я обнаружил проблему при использовании вашего второго решения в вашем ответе. В настоящий момент я делаю класс MyTimerSingleton реализованным интерфейсом Local и Remote, список JNDI-имен консоли jBoss пуст в моем модуле. Если я не помещаю оператор реализации, он содержит имена, как описано в вопросе. Я собираюсь добавить дополнительную информацию в вопрос, чтобы уточнить его. – XaviGG