пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Особенности реализации EJB версии 3.0. Сценарии размещения в контейнерах EJB 3.0. Упрощения модели программирования EJB. Роль интерфейсов EJBHome и EJBObject. Их реализация.

Спецификация EJB была рассчитана на решение таких сложных проблем как распределенные вычисления, управление транзакциями и персистентность данных.Цель EJB 3.0 — сделать начальную стадию разработки легче, а приложения — более удобными в сопровождении.

Простой интерфейс Time на JAVA

public interface Time {public Date currentTime ();}

Теперь преобразуем его в EJB. Сначала надо переопределить интерфейс, как показано ниже.

public interface Time extends EJBObject

{ public Date currentTime () throws RemoteException; }

В расширении EJBObject -это обычный интерфейс-маркер (marker interface). Хуже всего то, что приходится менять сигнатуру метода для объявления того, что он генерирует исключение RemoteException. В EJB 2.0 эта проблема решается за счет добавления альтернативного локального интерфейса, как показано ниже.

public interface TimeLocal

extends EJBLocalObject{public Date currentTime();}

Невозможно добиться, чтобы удаленный интерфейс расширял локальный (что казалось бы логичным), потому что его метод currentTime генерирует RemoteException, а локальный интерфейс этого не делает .Простая реализация для исх. интерфейса.

Листинг 4. Реализация исходного интерфейса

public class TimeBean implements Time

{ public Date currentTime ()

{ return new Date (); }

public TimeBean () { }}

Листинг 5. TimeBean Реализация EJB 2.1

public class TimeBean implements SessionBean

{ public void ejbCreate () { }

public Date currentTime ()

{ return new Date ();}

public void ejbActivate () throws EJBException, RemoteException { }

public void ejbPassivate () throws EJBException, RemoteException { }

public void ejbRemove () throws EJBException, RemoteException { }

public void setSessionContext (SessionContext sessionContext)

throws EJBException, RemoteException { }

public TimeBean () { }}

Все методы ejb… санкционируются интерфейсом SessionBean. Они являются методами возврата жизненного цикла. Они очень полезны в сложных сценариях, в которых происходит много обработки и расчетов для жизненного цикла сложных компонентов сессии. Однако это классический случай программирования от и до (то есть, наихудший из возможных сценариев).

Кроме того для EJB 2.1. нужно еще создать интерфейсы Home и LocalHome. Их использует контейнер, но обеспечивает разработчик.

Листинг 6. Интерфейс Time Home (реализация интерфейса Home)

public interface TimeHome extends EJBHome

{ //поля:

public static final String COMP_NAME= «java:comp/env/ejb/Time»;

public static final String JNDI_NAME= «Time»;

// create - методы

public Time create () throws CreateException,RemoteException;}


28.05.2018; 16:59
хиты: 179
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь