Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сит.docx
Скачиваний:
10
Добавлен:
26.09.2019
Размер:
353.03 Кб
Скачать
  1. Особенности реализации (home) и (Remote) интерфейсов для Entity компонентов.

Несколько entity-Компонентов могут реализовывать один и тот же интерфейс, даже если они используют различный вид управления состоянием (СМР или BMP). И SavingsAccount, и CheckingAccount используют один и тот же home-интерфейс (AccountHome) и remote-интерфейс (Account).

Home-интерфейсы для entity- и session-Компонентов очень похожи. Они наследуют один и тот же интерфейс javax.ejb.EJBHome. Home-интерфейс для entity-Компонента обязан объявить хотя бы один метод поиска; кроме того, наличие create-методов не является обязательным.

Пример Кода. Интерфейс AccountHome

public interface AccountHome extends javax.ejb.EJBHome { Account create(String name,float balance)throws java.rmi.RemoteException, javax.ejb.CreateException;

Account findByPrimaryKey(AccountPK primaryKey)

throws java.rmi.RemoteException, javax.ejb.FinderException; Java.util.Enumeration findAccountsLargerThan(float balance)

throws java.rmi.RemoteException, javax.ejb.FinderException; }

Интерфейс AccountHome объявляет три метода. Хотя наличие метода create () не является обязательным, такой метод объявлен в нашем примере. Этот метод позволяет добавить новую запись в сопоставленную с Компонентом таблицу БД. В нашем примере метод create () имеет два аргумента - номер счета (string) и его начальное состояние (float). Реализация метода использует значения этих аргументов для инициализации объекта, т.е. присвоения начальных значений номера счета и его состояния для вновь созданного объекта. Entity-Компонент обязан объявить метод поиска findByPrimarykey(); он находится в интерфейсе AccountHome. Этот метод имеет единственный аргумент - значение главного ключа типа AccountPK, и возвращает ссылку на remote-интерфейс Account. Разумеется, метод используются для поиска только одного Компонента.

В home-интерфейсе AccountHome объявлен еще один метод поиска, findAccountLargerThan (), хотя это и не является обязательным. Этот метод возвращает набор Компонентов (Java Enumeration), которые удовлетворяют условию поиска (на счету средств больше, чем указанная величина).

Remote-интерфейс Entity-Компонента

Несколько Entity-Компонентов могут реализовывать один и тот же remote-интерфейс, даже если они используют различные способы сохранения своего состояния (BMP или СМР). Оба Entity-Компонента примера bank реализуют один и тот же интерфейс Account.Remote-интерфейсы для Session- и Entity-Компонентов практически идентичны друг другу - оба они наследуют интерфейс javax.ejb.EJBObject и объявляют те бизнес-методы, который должны быть доступны для клиента.

public interface Account extends javax.ejb.EJBObject {

public float getBalance() throws java.rmi.RemoteException; public void credit(float amount)throws Java.rmi.RemoteException;

public void debit(float amount) throws java.rmi.RemoteException; }

Интерфейс Account объявляет три бизнес-метода: getBalance (), credit(0 и debit().

  1. Контейнер ejb, понятие, назначение, основные функции.

EJB-контейнер -- это то место, где ``живет'' EJB-компонент. EJB-контейнер реализует для находящихся в нем компонент такие сервисы как транзакции (transaction), управление ресурсами, управление версиями компонент, их мобильностью, настраиваемостью, жизненным циклом. Так как EJB-контейнер реализует все эти функции, то разработчик EJB-компонент может не реализовывать их самостоятельно, а просто вызывать соответсвующие методы у контейнера (правила вызова методов у контейнера описываются в спецификации). Как правило, в одном EJB-контейнере живет несколько однотипных EJB-компонент.

Контейнер EJB предоставляет как среду выполнения для своих Компонентов, так и инструменты для выполнения процесса поставки.

В общем случае, Контейнер предназначен для решения следующих задач:

  • Обеспечение безопасности - Дескриптор Поставки (deployment descriptor) определяет права доступа клиентов к бизнес-методам Компонентов. Обеспечение защиты данных обеспечивается за счет предоставления доступа только для авторизованных клиентов и только к разрешенным методам.

  • Обеспечение удаленных вызовов - Контейнер берет на себя все низкоуровневые вопросы обеспечения взаимодействия и организации удаленных вызовов, полностью скрывая все детали как от разработчика Компонентов, так и от клиентов, которые пишут код точно так же, как если бы система работала в локальной конфигурации, т.е. без использования удаленных вызовов вообще.

  • Управление циклом жизни - Клиент просто создает и (обычно) уничтожает экземпляры Компонентов. Тем не менее, Контейнер для оптимизации ресурсов и повышения производительности системы может самостоятельно выполнять различные действия, например, активизацию и деактивизацию этих Компонентов, создание их пулов

Управление транзакциями - Все параметры, необходимые для управления транзакциями, помещаются в Дескриптор Поставки. Все вопросы по обеспечению управления распределенными транзакциями в гетерогенных средах и взаимодействия с несколькими базами данных берет на себя Контейнер EJB. Контейнер обеспечивает за­щиту данных и гарантирует успешное подтверждение внесенных изменений; в противном случае транзакция откатывается.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]