Развертывание Weblogic EJB: классы в банке внутри уха недоступны - PullRequest
1 голос
/ 07 сентября 2010

Я пытаюсь развернуть ухо, содержащее приложение 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.

Если я помещу все свои банки в каталог lib моего домена, ухо будет успешно развернуто.

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

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. См. Комментарий в принятом ответе.

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

1 Ответ

2 голосов
/ 08 сентября 2010

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

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

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

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

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

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

...