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

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

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

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

Ответы

Ответ 1

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

Нет.

Модуль 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, в котором перечислены все банки и войны 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.Can, содержащие EJB, развертываются так же, как и другие другие java веб-проектов с использованием ECLIPSE и без используя ANT

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

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

Здесь - это учебник, который делает именно это.

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

Приложения для упаковки

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