Конфликт версий зависимостей EJB на сервере приложений Sun - PullRequest
1 голос
/ 23 июня 2010

Чтобы подвести итог проблемы, с которой я столкнулся, у меня есть EJB, который использует версию A библиотеки (назовем ее dep-vA.jar).dep-vA.jar упакован в корень jar-файла EJB.Папка lib домена на сервере приложений содержит версию B той же библиотеки (назовем ее dep-vB.jar).При вызове EJB я получаю сообщение об ошибке из-за загрузки файла dep-vB.jar, а не dep-vA.jar.

Полагаю, первая часть этого вопроса заключается в том, изолирует ли Sun One Application Server v9.1 EJB друг от друга?У меня сложилось впечатление, что это так.Но похоже, что другое приложение загрузило dep-vB.jar, и этот EJB использует его напрямую, не загружая свое собственное.

Второй вопрос: если сервер приложений изолирует EJB, загружает ли он зависимости из файла JAR EJB, прежде чем просматривать папки lib сервера приложений?У меня сложилось впечатление, что это тоже правда, но, возможно, нет ...

Кто-нибудь достаточно знаком с серверами приложений Sun, чтобы объяснить, почему загружается dep-vB.jar, а не dep-vA.jar?Есть ли способ заставить его загрузить файл dep-vA.jar без изменения содержимого папок lib сервера приложений?(Я бы затруднился сделать все, что может повлиять на другие приложения на сервере)

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 июня 2010

Полагаю, первая часть этого вопроса состоит в том, изолирует ли Sun One Application Server v9.1 EJB друг от друга?У меня сложилось впечатление, что это так.Но похоже, что другое приложение загрузило dep-vB.jar, и этот EJB использует его напрямую, не загружая свое собственное.

Согласно Sahoo (который является разработчиком GlassFish), спецификация Java EE делает не изоляцию загрузки мандатного класса среди модулей одногоухо, поэтому поведение может отличаться от одного сервера приложений к другому .В Sun ONE мое понимание документации заключается в том, что EJB-JAR изолированы.

Второй вопрос: если сервер приложений изолирует EJB, загружает ли он зависимости отJAR-файл EJB, прежде чем искать в папках lib сервера приложений?У меня сложилось впечатление, что это тоже так, но, возможно, нет ...

Это стратегия, ориентированная на родителей (насколько мне известно, Sun ONE позволяет изменить режим делегирования длятолько для веб-приложений ).

Как говорится, что произойдет, если вы перечислите dep-vA.jar в записи Class-Path MANIFEST.MF EJB-JAR?

См. также

0 голосов
/ 23 июня 2010

Я не использовал этот конкретный сервер, но я знаю, что в WebSphere есть возможность использовать загрузку классов PARENT_FIRST или PARENT_LAST.Вы бы искали эквивалент PARENT_LAST, где классы сначала загружаются из EAR, прежде чем подняться на сервер.

Я бы предположил, что такая конфигурация возможна на любом сервере приложений, так как вы всегда должны иметь возможность принудительно загружать файлы jar для своего приложения поверх любых других.

...