EJB



Поддержка JavaScript отключена

SBP-Program
На главную -> Java EE 5 &nbsp

&nbsp

Enterprise Java Beans (бизнес компоненты) – классы, представляющие бизнес логику приложения, т.е. то, что составляет суть приложения.

В сервере приложений имеется контейнер (EJB container), который управляет работой EJB, обеспечивая механизм транзакций и безопасность.

Есть два типа бизнес компонентов (EJB):

  • Session beans;
  • Message-Driven beans.

Session beans представлены двумя разновидностями: stateful и stateless. Session бины реализуют интерфейсы, клиент обращается к методам именно интерфейса, т.к. видит только их. Интефейсы бинов могут предоставлять удаленный или местный доступ. Удаленный клиент может работать на той же или другой виртуальной машине. Местный клиент должен работать на той же виртуальной машине. Удаленные клиенты работают не с теми параметрами, что бин.

Соглашение по именам бинов: интерфейс — “имя”; класс — “имя”Бин; сам бин — “имя”Бин. Пример: интерфейс – Nomen, класс – NomenBean, сам бин – NomenBean.

Такие бины сохраняют своё состояние только при обращении данного клиента, при обращении другого клиента состояние бина меняется, т.о такой бин может быть адресован разным клиентам. Это позволяет создавать меньше stateless бинов, чем если бы они были stateful, что повышает производительность. Но применять их можно только если они не содержат особых данных для конкретного клиента, stateless бины должны соответствовать всем клиентам.

Эти бины сохраняют своё состояние между обращениями клиента внутри одной сессии. При завершении сессии состояние бина теряется. Такой бин создаётся только для данного клиента, т.е. для каждого клиента свой постоянный(stateful) бин.

Message-Driven beans управляются сообщениями, как следует из их названия. Они работают подобно слушателям(listener), но управляются не событиями , а сообщениями. В отличии от session бинов message-driven бины не имеют интерфейса для обращений клиента.

Создадим enterprise bean, а потом его клиентов. Работаем в NetBeans. Application server должен быть установлен. Для примера разработаем веб-калькулятор на основе EJB и его настольный (не веб) вариант. Калькулятор в веб будет выглядеть так:

Java

Назначение этого калькулятора – складывать два числа, введённые пользователем. Бизнес-логика здесь – суммирование чисел. За бизнес-логику будет отвечать enterprise бин (EJB), который мы назовём CalculatorBean. Страница HTML будет получать ввод пользователя, передавать два числа CalculatorBean-у, enterprise бин делает расчёт и возвращает результат странице HTML.

Создадим новый прект в NetBeans, тип проекта – Enterprise Application, название – EJBCalculator, Java EE версия – Java EE 5, усановим флаги на Create EJB Module, Create Web Application Module, Create Application Client Module, далее Main Class назовём EJBCalculator. Жмём Finish и получаем на вкладке Projects:

Java

Сначала создадим enterprise бин CalculatorBean.

Клиент взаимодействует с EJB бином через интерфейс. Создадим интерфейс Calculator. В проекте EJBCalculator-ejb создадим папку ejbCalculator.bean, а в ней Remote интерфейс Calculator и реализующий его бин. Правой кнопкой по папке ejbCalculator.bean, в поле Category выбираем Enterprise, а в поле File Types – Session Bean. Жмём Next, в поле EJB Name напишем CalculatorBean, тип бина – Stateless, интерфейс – Remote, флаг Local сбросим. Жмём Finish. На вкадке Projects изменим название появившегося интерфейса CalculatorRemote на Calculator. Поучаем:

Java

В коде интерфейса Calculator объявляем метод sum, в котором и будет реализована бинес-логика проекта :

Правила для бизнес-методов:

  • название бизнес-метода не должно начинаться с ejb;
  • метод должен быть открытым и не иметь модификаторов static или final;
  • для методов remote интерфейсов типы возвращаемых значений и аргументы должны соответствовать требованиям Java RMI API.

Интерфейс готов, теперь можно построить реализующий его бин. В коде CalculatorBean пишем:

Правой кнопкой по проекту EJBCalculator-ejb, в открывшемся меню выбираем Build Project. Бин готов. Теперь переходим к клиентской части.

В проекте EJBCalculator-war создадим (правой кнопкой по EJBCalculator-war->New->JSP) JSP File с именем index. Получаем:

Java

Сначала сделаем статическую часть клиента (это именно веб-клиент), т.е. просто страницу HTML, изменив созданный мастером код:

Добавим директиву сраницы, здесь ссылка на интерфейс:

Добавим скриплет, где создадим ссылку на интерфейс:

Воспользуемся полученной ссылкой и установим значения полей:

Калькулятор готов. Компиляция сраницы JSP произойдёт автоматически при запуске. Запускаем (правой кнопкой по EJBCalculator->Run Project) и (Application Server должен быть запущен!) получаем:

Java

Сделаем приложение для клиента на Java. Это обычное окно, наследник от JFrame. Откроем в редакторе созданный мастером файл EJBCalculator:

EJBCalculator-app-client->Source Packages->ejbcalculator-> EJBCalculator.java

Укажем ссылку на enterprise бин:

Аннотация @EJB говорит, что это поле есть ссылка на enterprise бин, но типом ссылки является интерфес Calculator, а не бин.

В обработчике нажатия на кнопку bt вызываем метод sum бина. Вот полный код приложения клиента:

Компилируем проект EJBCalculator-app-client. Для запуска проекта EJBCalculator-app-client надо открыть свойства проекта EJBCalculator, раздел Run и в поле Client Module URI выбрать EJBCalculator-app-client. Теперь можно запускать.

Программирование

&nbsp
&nbsp
&nbsp