Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СИТ - 18 вопросов.docx
Скачиваний:
8
Добавлен:
08.11.2019
Размер:
103.77 Кб
Скачать
  1. Понятие, определение и использование собственного (home) интерфейса. Их программная реализация (примеры).

Домашний интерфейс

Для каждого создающегося класса Enterprise Bean необходимо разработать ассоциированный с ним домашний интерфейс. Домашний интерфейс используется как фабрика объектов (т.е., основная задача домашнего интерфейса создать реальный объект Enterprise Bean для решения задачи). При этом используется JNDI, в контексте которого известно место расположения домашнего интерфейса, на который возвращается ссылка. Клиентское приложение использует Home интерфейс для нахождения экземпляра EJB или создания нового экземпляра вашего EJB.

Домашний интерфейс - фабрика для создания компонента. Он может определить метод create, для создания экземпляра EJB, или метод finder, который находит существующий EJB и используется только для Сущностных Компонент. Основные принципы создания Домашнего интерфейса:

Домашний интерфейс должен быть публичным (public).

Домашний интерфейс должен расширять интерфейс javax.ejb.EJBHome.

Каждый метод create Home-интерфейса должен декларировать java.rmi.RemoteException в преложении throws наряду с javax.ejb.CreateException.

Возвращаемое значение метода create должно иметь тип Удаленного интерфейса.

Возвращаемое значение метода finder (только для Сущностных Компонент) должно иметь тип удаленного интерфейса или java.util.Enumeration, или java.util.Collection.

Любые объекты, передаваемые в качестве аргумента (либо напрямую, либо внутри локального объекта) должны быть действительными с точки зрения RMI-IIOP типом данным (включая другие EJB объекты).

Принятое стандартное соглашение об именах Домашних интерфейсов состоит в прибавлении слова “Home” в конец имени Удаленного интерфейса. Вот Домашний интерфейс для Sample EJB:

// Для удаленного интерфейса Sample

// Домашний интерфейс бина: SampleBean.

import java.rmi.*;

import javax.ejb.*;

public interface SampleHome extends EJBHome {

public Sample create()

throws CreateException, RemoteException;

} ///:~

  1. Сеансовые (Session) компоненты ejb без состояния и с состоянием, их особенности и применение.

Сессионный бин представляет одного клиента внутри сервера J2EE и обеспечивает доступ (вызов) к методам сессионных бинов. Как видно из его названия, сессионный бин подобен интерактивному сеансу. Бин сеанса не является совместно используемым, т.к. интерактивный сеанс может иметь только одного пользователя. Как и интерактивный сеанс, бин сеанса не сохраняется. (То есть, его данные не записываются в базу данных.) Когда клиент заканчивает работу, его бин сеанса тоже заканчивается, и он больше уже не связан с клиентом (пример реализации смотри приложение 1).

Типы сессионных бинов:

  • с состоянием

  • без состояния.

Бины сеанса с состоянием

Состояние объекта состоит из значений переменных его экземпляра в конкретном уникальном сеансе взаимодействия между клиентом и бином. Поскольку клиент взаимодействует ("разговаривает") со своим бином, это состояние часто называют диалоговым состоянием.

Состояние сохраняется в течение всего сеанса взаимодействия между клиентом и бином. Если клиент удаляет бин или завершает работу, сеанс закрывается и состояние исчезает (для задач, где нет нужды сохранять состояния после завершения диалога с бином).

Бины сеанса без состояния

Бины сеанса без состояния не поддерживают состояние диалога для определенного клиента. Переменные экземпляра бина могут содержать состояние, но только на время вызова метода. Когда метод заканчивается, состояние больше не удерживается.

За исключением времени выполнения метода, все экземпляры бина без состояния эквивалентны, что позволяет контейнеру EJB назначать экземпляр любому клиенту (из организуемого пула экземпляров).

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

Иногда контейнер EJB записывает бины сеанса с состоянием во вторичную память. Но бины сеанса без состояния никогда не записываются во вторичную память. Следовательно, бины без состояния могут обеспечить лучшую производительность, чем бины с состоянием.

Следует использовать бины сеанса при следующих обстоятельствах:

  • В каждый момент времени только один клиент имеет доступ к экземпляру бина.

  • Состояние бина не сохраняемое, он существует только в течение короткого периода времени (возможно, несколько часов).

Бины сеанса с состоянием применяются, если выполняются следующие условия:

Состояние бина представляет взаимодействие между бином и определенным клиентом.

Бину необходимо хранить информацию о клиенте между вызовами метода.

Бин служит промежуточным звеном между клиентом и другими компонентами приложения, давая клиенту упрощенное представление.

"За сценой" бин управляет рабочим потоком нескольких корпоративных бинов.

Для повышения производительности вам следует выбрать бин сеанса без состояния, если он имеет любую из следующих особенностей:

Состояние бина не содержит данных для определенного клиента.

В одном вызове метода бин выполняет общую задачу для всех клиентов. Например, вы можете использовать бин сеанса без состояния для отправки по электронной почте сообщения, которое подтверждает заказ сделанный "on-line".

Бин выбирает из базы данных данные, предназначенные только для чтения, которые часто используются клиентами. Такой бин, например, может извлекать строки таблицы, представляющие товары, имеющиеся в продаже в этом месяце.

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