Сеансовые компоненты. Введениев Enterprise JavaBeans. Представления EJB и UML. Представление компонентов EnterpriseJavaBeans в UML, страница 11

На рис. 12.13 изображена успешная транзакция, охватывающая один деловой метод. Можно заметить, что клиент в этом случае имеет дело только с интерфейсами и не знает никаких деталей класса реализации. Физическое расположение класса реализации не имеет для клиента никакого значения. Благодаря этому обеспечивается большая гибкость: реализацию можно модифицировать так, что это не повлияет на клиента. Клиента могут затронуть только изменения непосредственно в интерфейсах.

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

Моделирование отношений сеансовых компонентов

Сеансовый компонент может иметь отношения с другими компонентами и классами, например, JavaBeans, другими сеансовыми компонентами, сервлетами и т.д. В данном разделе рассматривается моделирование таких отношений.

Сеансовые компоненты и простые классы Java

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

На рис. 12.15 показан пример моделирования сеансового компонента и других классов Java.

Сеансовые компоненты и компоненты JavaBeans

Сеансовые компоненты и компоненты JavaBeans можно использовать совместно различными способами. Например, компонент JavaBeans может служить средством передачи информации между сеансовыми компонентами и другими компонентами JavaBeans в составе приложения.

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

Сеансовые компоненты и сервлеты

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

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

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

Пример моделирования отношения показан на рис. 12.16. При желании можно пометить ассоциацию между сервлетом и сеансовым компонентом стереотипом «instantiate», чтобы яснее показать, что сервлет создает сеансовый компонент при помощи его местного интерфейса.

Некоторые профессионалы в области J2EE полагают", что сервлеты должны не сами обрабатывать запросы и ответы, а определять и создавать для этой задачи подходящие сеансовые компоненты и потом уже просто передавать им на обработку объекты запросов и ответов. Они считают, что сервлеты имеет смысл использовать, когда программа должна работать исключительно с Web-броузерами, но с появлением разнообразных типов клиентов становится целесообразным, чтобы логика представления была независимой от клиента.

Сеансовые компоненты и компоненты JSP