Объяснение EJB относительно EAR против WAR

Я только начал читать об EJB.

Даже когда я отважусь на это, у меня есть несколько вопросов, основанных на том, что я слышал о них.

  1. Всегда ли приложения, использующие EJB, должны развертываться как EAR?
  2. Можно ли развертывать приложения, содержащие EJB, так же, как и другие веб-проекты Java, с использованием ECLIPSE и без использования ANT?

person Anand Sunderraman    schedule 13.10.2010    source источник


Ответы (1)


1. Всегда ли приложения, использующие ejb, должны развертываться как EAR?

No.

Модуль EJB собран в JAR, давайте назовем его myapp-ejb.jar в качестве соглашения об именах.

Он содержит код EJB, а также файл дескриптора развертывания с именем ejb-jar.xml в EJB 2.x. В EJB 3.0 сам код содержит аннотации, необходимые серверу для понимания при развертывании, поэтому дескрипторы развертывания необязательны. Дескриптор/аннотации развертывания охватывают базовые вещи, необходимые для развертывания EJB, такие как JNDI, поиск DataSource и т. д.

Набор из нескольких модулей EJB и других веб-модулей (войны) вместе составляет EAR. Как указал @Isaac, EAR не обязательно должен включать в себя какой-либо файл WAR. Единственным условием для файла EAR является наличие хотя бы одного модуля J2EE любого типа.

Для EAR требуется META-INF/application.xml, в котором перечислены все JAR-файлы и войны EJB, присутствующие в EAR. Таким образом, вы выбираете EAR, когда у вас есть несколько модулей EJB, что обычно и происходит, поэтому обычное развертывание - это EAR.

Ниже показан пример этого файла, взятого с http://download.oracle.com/docs/cd/B32110_01/web.1013/b28221/undejdev003.htm. Это хорошая статья для вас, чтобы прочитать.

<application>
  <display-name>master-application</display-name>
  <module>
    <ejb>ejb1.jar</ejb>
  </module>
  <module>
    <ejb>ejb2.jar</ejb>
  </module>
  <module>
    <java>appclient.jar</java>
  </module>
  <module>
    <web>
        <web-uri>clientweb.war</web-uri>
        <context-root>webapp</context-root>
    </web>
  </module>
  <module>
    <ejb>ejb3.jar</ejb>
  </module>

2. Могут ли приложения, содержащие EJB, быть развернуты так же, как и другие веб-проекты Java с использованием ECLIPSE и без использования ANT.

Да, после сборки EAR/JAR его можно развернуть на сервере (при желании через Eclipse).

Ant — это инструмент сборки, который не имеет ничего общего с фактическим развертыванием кода EJB. Он используется для компиляции и сборки JAR, что также можно сделать из Eclipse.

Вот руководство, которое делает именно это.

Дополнительная литература

Упаковка приложений

Упаковка приложений EJB3

person JoseK    schedule 13.10.2010
comment
Хорошее объяснение. Небольшая поправка: EAR не должен включать в себя какой-либо WAR-файл. Единственным условием для файла EAR является наличие хотя бы одного модуля J2EE любого типа. - person Isaac; 20.10.2010
comment
@Isaac: Спасибо, уточню это в ответе - person JoseK; 21.10.2010
comment
некробампинг, можно ли встроить библиотеки в банку ejb? - person carpinchosaurio; 08.03.2018
comment
@carpinchosaurio: у вас могут быть библиотеки в WEB-INF/lib войны, а затем объединенные в EJB EAR или как автономные JARS в EAR — см. appclient.jar пример выше - person JoseK; 08.03.2018
comment
@JoseK, спасибо, но в моем случае у меня нет ни WAR, ни EAR, просто EJB - person carpinchosaurio; 08.03.2018