EJB объяснение относительно EAR против WAR - PullRequest
11 голосов
/ 13 октября 2010

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

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

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

1 Ответ

26 голосов
/ 13 октября 2010

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

Нет.

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

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

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

EAR требуется META-INF/application.xml, в котором перечислены все банки 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 Применения

...