Я использую Glassfish 3.1.1 и пытаюсь заставить развертывание EJB2.x работать до перехода на EJB3. Я сделал небольшой пример, который структурирован так:
- EAR
- a.jar
ejb-jar.xml
для описания компонента A, содержащего удаленный и локальный интерфейсы.
- Бин также содержит вспомогательный класс для узкого () объекта домашнего интерфейса.
- b.jar
ejb-jar.xml
для описания bean-компонента B, содержащего удаленный и локальный интерфейсы.
- Бин также содержит вспомогательный класс для узкого () объекта домашнего интерфейса.
- C.war
web.xml
содержит сервлет и теги <ejb-local-ref>
для указания на локальный интерфейс компонентов A и B
- war содержит код для поиска локального интерфейса и его сужения с использованием вспомогательного класса компонента.
Это все развертывается и работает нормально. Но когда я хочу вывести поисковый код из войны и переместить его в банку, которая доступна под lib/helper.jar
, я получаю ClassNotFoundException
на узком помощнике.
Caused by: java.lang.ClassNotFoundException: com.abeloos.glassfish.helper.narrow.calculator.EJBNarrow
at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:808)
at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:696)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
Это почти как если бы вы не могли получить доступ к коду бина, если пришли из lib-path.