Разработка системы бизнес-бронирования на базе технологии EJB
Автор:Eve Cole
Время обновления:2009-07-02 17:12:35
Технология все чаще используется при разработке крупномасштабных сетевых систем. В этой статье автор представит определение EJB (Enterprise Java Beans), модель структуры системы приложений, основанную на технологии EJB, а также содержание и классификацию EJB. Наконец, в сочетании с EJB-системой. Разработана система бизнес-бронирования с использованием структурной модели и компонентов EJB.
Технически EJB — это не «продукт», а техническая спецификация. Определение EJB, данное SUN, следующее: Структура EJB — это структура компонентов для разработки и настройки распределенных бизнес-приложений на основе компонентов. Приложения, разработанные с использованием структур EJB, являются масштабируемыми, транзакционными и безопасными для многопользовательской среды. Эти приложения, возможно, потребуется написать только один раз, но их можно будет развернуть на платформе сервера задач, поддерживающей спецификацию EJB. В общем, EJB — это стандартная модель серверных компонентов для мониторинга транзакций компонентов.
Модель структуры системы на основе технологии EJB
Структура EJB представляет собой структуру серверных компонентов, которая представляет собой иерархическую структуру. Ее структурная модель показана на рисунке 1. Эту структурную модель обычно можно разделить на уровень клиента, уровень бизнес-логики и уровень данных. Ниже автор кратко расскажет об этом.
Рисунок 1. Модель структуры приложения на основе EJB.
Клиентский уровень в основном используется для удовлетворения различных требований доступа ко всей системе и решения следующих задач:
Получать пользовательский ввод, анализировать и проверять вводимые пользователем данные и обрабатывать их соответствующим образом;
Отображает текущие результаты, передаваемые с сервера высокого уровня.
Клиентский уровень обычно состоит из клиентских процессов, которые динамически создаются и уничтожаются браузером.
Уровень бизнес-логики. Это наиболее важная часть всей системы. Уровень бизнес-логики обычно делится на два уровня. Верхний уровень — это уровень приема запросов (обычно называемый веб-уровнем), который используется для получения запросов от браузера и передачи запросов на нижний уровень для обработки. отправляются в браузер. Эти процессы в основном состоят из страниц JSP, веб-апплетов и сервлетов, отображающих HTML-страницы. Нижний уровень — это уровень обработки запросов (обычно называемый уровнем EJB), который включает в себя процесс прослушивания, процесс обработки и процесс работы с базой данных. Он отвечает за обработку запросов клиентов от уровня приема запросов и их одновременную обработку. передача результатов запроса на уровень приема запроса, при необходимости результаты обработки необходимо передать на уровень данных для хранения.
Уровень данных в основном предоставляет услуги по работе с данными для уровня бизнес-логики, такие как сохранение результатов обработки уровня бизнес-логики и возврат результатов данных, полученных уровнем бизнес-логики. Он также используется для защиты изменений в источнике данных. когда база данных изменяется, нам нужно только изменить ее. Просто используйте оператор для подключения к источнику данных.
Классификация EJB-компонентов Обычно существует два основных типа серверных EJB-компонентов: Entity Bean и Session Bean.
Рисунок 2. Архитектура бизнес-системы бронирования
Entity Beans — это модели, созданные для объектов реального мира, которые обычно представляют собой постоянные записи в базе данных. Entity Bean создает модель бизнес-концепций, которые могут быть выражены в виде существительных. Он описывает как состояние реальных объектов, так и их поведение, а также позволяет разработчикам инкапсулировать данные и бизнес-правила, связанные с конкретными концепциями. Сеансовый компонент — это корпоративный компонент, созданный через домашний интерфейс и предназначенный для клиентских соединений. Экземпляры сеансового компонента обычно не используются другими клиентами. Session Bean является расширением клиентского приложения и отвечает за управление всем процессом или задачей. Сессионные компоненты могут управлять взаимодействием между Entity Beans, описывая, как они работают вместе для выполнения специальной задачи.
Entity bean-компоненты можно разделить на bean-компоненты, управляемые контейнером, и bean-компоненты, управляемые с помощью bean-компонентов, в зависимости от того, как они управляют постоянством. Компоненты, управляемые контейнером, автоматически управляются контейнером EJB. Контейнер знает, как поля экземпляра компонента сопоставляются с базой данных, и автоматически управляет вставкой, обновлением и удалением данных, связанных с объектами, в базе данных. управлять персистентностью. Компоненты должны делать все это явно. Разработчики компонентов должны писать код для работы с базой данных. Контейнер EJB сообщает экземпляру компонента только о том, когда он может безопасно вставлять, обновлять и удалять данные в базе данных. Кроме того, он не предоставляет никакой другой помощи. Экземпляр компонента самостоятельно выполняет всю работу по сохранению.
Сессионные компоненты можно разделить на компоненты без сохранения состояния и компоненты с состоянием в зависимости от того, имеют ли они состояние. Сессионные компоненты без сохранения состояния, как правило, универсальны и допускают многократное использование. Сессионные компоненты с сохранением состояния представляют собой расширения клиентских приложений, которые выполняют задачи от имени клиентов и поддерживают статус, связанный с клиентом.
Разработка системы бронирования для бизнеса. Система бронирования кают представляет собой систему бронирования для бизнеса, основанную на технологии компонентов EJB, разработанной на платформе J2EE. Ее основной процесс заключается в том, что после входа в систему пользователь проходит через страницу выбора клиента и страницу выбора навигации. В свою очередь, и предложит клиенту выбрать доступную каюту (получить список доступных кают из TravelAgentBean. Метод listAvailableCabin() TravelAgentBean вызывается сервлетом, который генерирует эту веб-страницу. Список кают будет использоваться для создания HTML-список на веб-странице, загруженной в браузер пользователя), когда пользователь выбирает кабину и отправляет свой выбор, HTTP-запрос будет отправлен на сервер EJB (сервер приложений Websphere). После того, как сервер получает запрос, он отправляется. его в ReservationServlet. Этот сервлет вызывает метод TravelAgent.BookPassage(). Для фактического бронирования информация тега, возвращаемая методом BookPassage(), будет использоваться для создания другой веб-страницы, которая отправляется обратно в браузер пользователя. Если резервирование прошло успешно, ProcessPaymentServlet вызовет метод оплаты в ProcessPaymentBean, чтобы реализовать процесс взимания платы для клиента. Его конкретная структура показана на рисунке 2.
Компоненты EJB в системе резервирования в основном включают в себя следующие части:
CabinBean: Entity Bean, первичным ключом является CabinPK, который представляет собой Entity Bean, используемый для инкапсуляции каюты корабля в реальном мире.
CustomerBean: Entity Bean, первичным ключом является CustomerPK, который представляет собой объектный компонент, используемый для инкапсуляции потребителей, которым необходимо забронировать круизные каюты в реальном мире.
CruiseBean: Entity Bean, первичным ключом является CruisePK, который представляет собой Entity Bean, используемый для инкапсуляции маршрутов судов в реальном мире. ReservationBean: Entity Bean, первичный ключ — CruiseID, CabinID. Он представляет собой неизмененную запись в базе данных, то есть бронирование. Он записывает исторические события системы бронирования. В основном используется для предотвращения двойного бронирования, то есть. два клиента бронируют один и тот же маршрут. Причина этой проблемы в том, что существует разрыв между временем, когда клиент выбирает салон и маршрут, и временем, когда вызывается метод bookPassage(). TravelAgentBean: сессионный компонент с сохранением состояния, сессионный компонент, отвечающий за рабочий процесс бронирования авиабилетов. Он инкапсулирует процесс завершения операции бронирования маршрута и используется в клиентских приложениях турагентов по всему миру. TravelAgentBean не только удовлетворяет потребности потребителей в бронировании билетов, но и предоставляет информацию об оставшихся каютах во время рейса. Для выполнения этой задачи компоненту необходимо знать, для какого маршрута, салона и клиента выполнено бронирование. После сбора этой информации метод bookPassage() завершает процесс бронирования. Он отвечает за выставление счета клиенту. На правильном маршруте Забронируйте выбранную каюту на правильном корабле и сгенерируйте билет для клиента через класс билета. Здесь нам нужно использовать класс CreditCard для хранения соответствующей информации о кредитной карте клиента. В то же время метод ListAvailableCabins() используется для отображения доступных кают, которые не были забронированы.
ProcessPaymentBean: сеансовый компонент без сохранения состояния, который представляет собой процесс взимания платы с потребителей в системе транзакций. Он определяет три метода транзакций для способов оплаты чеками, наличными и кредитными картами, а именно ByCheck(), ByCash() и ByCredit().
Пример программного кода системы бизнес-бронирования Вся система бизнес-бронирования была разработана под управлением IBM VisualAge для Java. В этой среде разработки IDE-компоненты разрабатывать гораздо проще, чем сессионные компоненты. В качестве примера для ознакомления с процессом разработки используется TravelAgentBean. компонентов EJB:
1. Удаленный интерфейс TravelAgent. Предоставляет метод установки маршрута и идентификатора каюты, которую клиент хочет забронировать. Кроме того, метод boolPassage() настроен для выставления счета клиенту за бронирование и создания билета для клиента. Конкретный код выглядит следующим образом:
пакет com.titan.travelagent;
импортировать java.rmi.RemoteException;
импортировать javax.ejb.FinderException;
импортировать com.titan.cruise.Cruise;
импортировать com.titan.customer.Customer;
импортировать com.titan.processpay.CreditCard;
общедоступный интерфейс TravelAgent расширяет javax.ejb.EJBObject
{
public void setCruiseID(int Cruise) выдает RemoteException, FinderException;
public int getCruiseID( ) выдает RemoteException, IncompleteConversationalState;
public void setCabinID(int cab) выдает RemoteException, FinderException;
public int getCabinID() выдает RemoteException, IncompleteConversationalState;
public int getCustomerID() выдает RemoteException, IncompleteConversationalState;
общедоступный билет boolPassage (карта CreditCard, двойная цена) выдает RemoteException, IncompleteConversationalState;
}
2. Домашний интерфейс TravelAgent
Код интерфейса TravelAgent Home выглядит следующим образом:
пакет com.titan.tracelagent;
импортировать java.rmi.RemoteException;
импортировать javax.ejb.CreateException;
импортировать com.titan.customer.Customer;
общедоступный интерфейс TravelAgentHome расширяет javax.ejb.EJBHome {
public TravelAgent create (Cust Customer) выдает RemoteException, CreateException;}
3. Класс TravelAgent Bean должен реализовать все функции удаленного и домашнего интерфейса TravelAgent. Из-за ограничений по объему в этой статье не будет представлен код его реализации. Заинтересованные читатели могут завершить его самостоятельно.
Выполнив описанные выше шаги, мы завершили разработку EJB-компонента системы бизнес-бронирования.