2013-08-14 1 views
1

В то время я пытаюсь добавить сторонние библиотеки в EJB-JAR. Пока мне кажется, что это невозможно, но я не уверен, и почему это невозможно.Сторонние библиотеки в EJB-JAR

Я хочу создать отдельные EJB-JARs и WARs, не складывая их в один EAR.

Арьян Tijms показывает в Java EE - EAR vs separate EJB+WAR три способами, и clearify его, я хочу вариант 2.

Мое собственное исследование приходит главным образом на вопросы со следующими ответами J2EE: How to package 3rd party JARs into an EJB jar?, но я не хочу файл EAR.

На сайте oracle отображается следующая упаковка для EJB-JAR: EJB packaging, у которых нет собственного каталога lib, такого как WAR. Я уже пытался поставить libary в корневой каталог (используя eclipse + JBoss 7). Мой первый вопрос: возможно ли добавить лишние библиотеки в EJB-JAR, например, в WAR-файл? Это меня смущает, потому что можно развернуть простой EJB-JAR на сервер приложений, но, похоже, вы не можете добавить сторонние библиотеки. Для меня EAR, кажется, в основном «overkill», потому что для меня нет никакого реального преимущества, а во-вторых, если я помещаю библиотеку в EAR, разные коннекторы EJB-JARs используют разные версии из сторонних библиотек. Я хочу, чтобы EJB-JAR полностью независим от других EJB-JAR и WAR. Я только создал дополнительный простой проект jar, который содержит интерфейсы, которые должны быть реализованы, и добавляется к каждому проекту EJB и проекту WAR. Это подводит меня к вопросу 2: Я использовал для EAR, если да, то почему? Мне кажется, что я чего-то еще не понимаю.

+1

Вы очень стараетесь сделать это без использования .ear. Это не слишком много, это решение вашей проблемы. Вы уже нашли соответствующий вопрос, он работает, просто сделайте это. – Beryllium

+0

Здравствуйте, Beryllium, что делать, если некоторым EJB-JAR нужны разные версии сторонних библиотек. Должны ли использоваться разные EAR? – user2680083

+0

Возможно, есть способ определить отдельные загрузчики классов для каждого ejb-jar, но он задает проблемы. Опять вместо того, чтобы пытаться найти особый путь вокруг него, я предлагаю использовать только ** одну ** версию конкретной банки. – Beryllium

ответ

0

Банки не должны содержать банки.

Я бы просто упаковал EJB в WAR (либо непосредственно в WEB-INF/классы, либо как отдельные ejb-jars в WEB-INF/lib), поместил сторонние библиотеки в WEB-INF/lib и назовите его день. Ваш подход довольно ограничен. Вы не сможете вводить свои EJB, и вам придется использовать удаленный поиск.

+0

Thx, для ответа - Это то, что я хочу, я хочу очень четкую грань между этими элементами. И когда я правильно помню, с EJB 3.1 все еще возможно, но удаленный поиск с прямым JNDI запланирован от меня по другим причинам. Мне кажется, что каталог lib - это какая-то недостающая вещь в ejb-jars. Я все еще хочу это разделение и должен думать об этом, как я это понял сейчас. – user2680083

3

Вы можете поместить JARs сторонние в папке lib/ в EAR и добавить

<library-directory>lib</library-directory> 

к вашему application.xml.

+0

Thx, но дело в том, что я не хочу использовать EAR, потому что до сих пор для меня не было преимуществ (исключение - возможность добавления библиотек) и проблема, что для каждого EJB-JAR в EAR, все версии библиотеки одинаковы. Если вы знаете, что EJB-JAR не может содержать сторонние библиотеки, тогда скажите, пожалуйста, я еще не нашел четкого ответа на него. – user2680083

+1

Затем поместите их в 'WEB-INF/lib'. –

+0

К сожалению, это не работает для EJB-JAR. – user2680083