package com.example.cart;
@Stateless
public class CartBean { ... }
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
В этом разделе объясняется, как Enterprise-бины могут быть упакованы в модули EJB JAR или WAR. Он включает в себя следующие разделы:
Файл EJB JAR переносим и может использоваться в различных приложениях.
Чтобы скомпоновать приложение Java EE, упакуйте его в один или несколько модулей, таких как файлы EJB JAR или EAR-файл. При развёртывании EAR-файла, содержащего файл EJB JAR Enterprise-бина, Enterprise-бин также развёртывается на GlassFish Server. Вы также можете развернуть EJB JAR, который не содержится в EAR-файле. На рисунке 5-2 показано содержимое файла EJB JAR.
Enterprise-бины часто предоставляют бизнес-логику веб-приложения. В этих случаях упаковка Enterprise-бина в модуль WAR веб-приложения упрощает развёртывание и организацию приложения. Enterprise-бины могут быть упакованы в модуль WAR как файлы классов Java или в JAR-файл, входящий в состав модуля WAR.
Чтобы включить файлы классов Enterprise-бина в модуль WAR, файлы классов должны находиться в каталоге WEB-INF/classes
.
Чтобы включить JAR-файл, содержащий Enterprise-бины, в модуль WAR, добавьте JAR в каталог WEB-INF/lib
модуля WAR.
Модули WAR, содержащие Enterprise-бины, не требуют дескриптора развёртывания ejb-jar.xml
. Если приложение использует ejb-jar.xml
, оно должно находиться в каталоге WEB-INF
модуля WAR.
JAR-файлы, содержащие классы Enterprise-бинов, упакованные в модуле WAR, не считаются файлами EJB JAR, даже если JAR-файл в целом соответствует формату файла EJB JAR. Компоненты EJB, содержащиеся в JAR-файле, семантически эквивалентны компонентам EJB, расположенным в каталоге WEB-INF/classes
модуля WAR, а пространство имён среды всех компонентов EJB распространяется на модуль WAR.
Для примера предположим, что веб-приложение состоит из Enterprise-бина корзины покупок, Enterprise-бина обработки кредитных карт и внешнего интерфейса сервлета Java. Компонент корзины покупок предоставляет локальное представление без интерфейса и определяется следующим образом:
package com.example.cart;
@Stateless
public class CartBean { ... }
Компонент обработки кредитной карты упакован в свой собственный JAR-файл cc.jar
, предоставляет локальное представление без интерфейса и определяется следующим образом:
package com.example.cc;
@Stateless
public class CreditCardBean { ... }
Сервлет com.example.web.StoreServlet
обрабатывает веб-интерфейс и использует как CartBean
, так и CreditCardBean
. Компоновка модуля WAR для этого приложения выглядит следующим образом:
WEB-INF/classes/com/example/cart/CartBean.class
WEB-INF/classes/com/example/web/StoreServlet
WEB-INF/lib/cc.jar
WEB-INF/ejb-jar.xml
WEB-INF/web.xml
Назад | Вперёд | Содержание |