Ошибка загрузчика классов EAR и EJB

Я разрабатываю клиент, который использует библиотеку Overthere 2.3.1. С локальной машиной клиент работает отлично. Но когда я пытаюсь вызвать тот же код, включенный в EJB 3.0, у меня возникает исключение, что загружены не все необходимые классы.

Я просмотрел источник и обнаружил, что класс содержит сканер аннотаций протокола ( https://github.com/hierynomus/scannit) с жестко закодированным именем класса:

Scannit scannit = new Scannit(Configuration.config()
     .scan("com.xebialabs")
     .with(new AbstractScanner[] { new TypeAnnotationScanner() }));

Команда

Thread.currentThread().getContextClassLoader().getResources("com/xebialabs") 

возвращает ноль.

Похоже, EJB работает в отдельном загрузчике классов, который не имеет доступа ко всем банкам.

EJB упакован в EAR со следующей структурой:

EAR    
--META-INF    
----sda-dd.xml
----SAP_MANIFEST.MF
----MANIFEST.MF  
----application-j2ee-engine.xml    
--ejb.jar    
--extlibs.jars

Файл MANIFEST.MF не содержит ссылок на внешние библиотеки в CLASS-PATH. Проект EAR успешно развернут на сервере приложений.

EJB.jar также содержит META-INF/MANIFEST.MF со значением "Class-Path: ." по умолчанию.

Я уже пробовал поиграться с CLASS-PATH в файлах манифеста, но безуспешно.

Может ли кто-нибудь помочь мне, как построить проект со всеми внешними библиотеками, которые будут загружаться во время работы EJB? Что я пропустил с ресурсами и загрузчиками классов?

0 ответов

Другие вопросы по тегам