Ответ 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.
Здесь - это учебник, который делает именно это.
Дополнительная литература