Развертывание Weblogic EJB: классы в jar внутри уха недоступны

Я пытаюсь развернуть ухо, содержащее приложение ejb, на сервере weblogic 9.2.

Это ухо создано с помощью maven (само с помощью задачи ear ant). Maven создает следующую структуру:

myApp.ear
 - META-INF
   - application
   - MANIFEST.MF
 - dependency-1.jar
 - dependency-2.jar
 - ...
 - dependency-n.jar
 - myEjb.jar

Манифест содержит хорошо выглядящий раздел "Путь к классу" (перечислены все зависимости jar)

Когда я пытаюсь развернуть ухо, я получаю исключение NoClassDefFoundError.

Если я помещаю все свои jar-файлы в каталог lib своего домена, ухо развертывается успешно.

Если я помещу все свои банки в каталог с именем APP-INF / lib (стандарт веб-логики), ухо тоже будет успешно развернуто.

myApp.ear
 - META-INF
   - application
   - MANIFEST.MF
 - APP-INF
   - lib
     - dependency-1.jar
     - dependency-2.jar
     - ...
     - dependency-n.jar
 - myEjb.jar

В том же проекте у меня есть другие уши, которые не используют каталог APP-INF / lib, которые работают отлично.

Кто-нибудь знает, почему weblogic не может развернуть мое ухо?


После некоторого расследования я нашел источник проблемы: это был путь к классу в манифесте модуля myEjb.jar. См. Комментарий в принятом ответе.

Большое спасибо.


person Guillaume    schedule 07.09.2010    source источник


Ответы (1)


Стандартный подход для jar-файлов зависимостей в EAR заключается в том, чтобы поместить их в APP-INF / lib, как указано в документации.

http://download.oracle.com/docs/cd/E13222_01/wls/docs81/programming/environment.html#1099434

Я подозреваю, что проблема в вашем первом EAR кроется в фактических записях пути к классам в вашем Manifest.mf

см. раздел Manifest Class-Path на http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/classloading.html#wp1065667

Записи манифеста Class-Path относятся к другим архивам относительно текущего архива, в котором эти записи определены.

Есть ли какие-либо подкаталоги или неправильный относительный путь?

person JoseK    schedule 08.09.2010
comment
Спасибо JoseK. Я узнал, что ухо с APP-INF / lib является стандартом веб-логики. Но моя система сборки выдает ухо без этого каталога. Созданный манифест также выглядит хорошо. И что самое странное, другие конструкции ушей с тем же инструментом работают нормально. - person Guillaume; 08.09.2010
comment
@Guillaume: Мне интересно, имеет ли какой-либо из jar-файлов зависимости зависимость от другой связанной зависимости - следовательно, вызывая проблему? - person JoseK; 08.09.2010
comment
Я обнаружил проблему: это была проблема Manifest Class-Path в модуле ejb.jar, а не в META-INF / MANIFEST Class-Path в ухе. Спасибо большое за вашу помощь. - person Guillaume; 08.09.2010