У меня есть файл EAR с кучей JAR-файлов, и один из этих JAR-файлов содержит локальные компоненты сеанса (EJB3). Мне нужно выполнить JNDI-поиск этих Сессионных Бинов из неуправляемого POJO, также содержащегося в EAR (и в этом случае в том же JAR, что и EJB). Я пытался следовать FAQ по Glassfish EJB , но я продолжаю получать исключение javax.naming.NameNotFoundException, независимо от того, что я пытаюсь.
Я не уверен в нескольких вещах. Где я должен положить свой ejb-jar.xml (я пробовал EARs META-INF, а также JARs META-INF)? Нужен ли мне файл sun-ejb-jar.xml? Что такое ejb-ссылка, что она делает? Что я могу делать не так (моя конфигурация почти идентична конфигурации, указанной в FAQ для локальных поисков)?
Я перечисляю некоторые конфигурации, которые я пробовал, и результат ниже:
<enterprise-beans>
<session>
<ejb-name>ITestBean</ejb-name>
<ejb-class>com.test.TestBean</ejb-class>
<ejb-local-ref>
<ejb-ref-name>ITestBean</ejb-ref-name>
<local>com.test.ITestBean</local>
</ejb-local-ref>
</session>
</enterprise-beans>
Приложение развертывается, но поиск JNDI возвращает ноль.
<enterprise-beans>
<session>
<ejb-name>ITestBean</ejb-name>
<ejb-class>com.test.TestBean</ejb-class>
<ejb-local-ref>
<ejb-ref-name>ITestBean</ejb-ref-name>
<local>com.test.ITestBean</local>
<ejb-link>ITestBean</ejb-link>
</ejb-local-ref>
</session>
</enterprise-beans>
Приложение не разворачивается: невозможно определить локальный бизнес по сравнению с удаленным бизнес-назначением для EJB 3.0 ref Unresolved Ejb-Ref ITestBean@jndi.
<enterprise-beans>
<session>
<ejb-name>ITestBean</ejb-name>
<ejb-class>com.test.TestBean</ejb-class>
<ejb-local-ref>
<ejb-ref-name>ITestBean</ejb-ref-name>
<local>com.test.ITestBean</local>
<ejb-link>MyJar.jar#ITestBean</ejb-link>
</ejb-local-ref>
</session>
</enterprise-beans>
Приложение не развернуто: ошибка: не решена: MyJar.jar # ITestBean.
<enterprise-beans>
<session>
<ejb-name>ITestBean</ejb-name>
<local>com.test.ITestBean</local>
<ejb-local-ref>
<ejb-ref-name>ITestBean</ejb-ref-name>
</ejb-local-ref>
</session>
</enterprise-beans>
Ошибка обработки EjbDescriptor