Читаем Изучаем Java EE 7 полностью

Параметр name определяет имя EJB-компонента и по умолчанию имеет значение в виде имени класса (ItemEJB в листинге 7.6). Этот параметр можно задействовать, например, для поиска EJB-компонента с применением JNDI. Параметр description — это строка, которая может быть использована для описания EJB-компонента. Атрибут mappedName определяет глобальное JNDI-имя, присваиваемое контейнером. Следует отметить, что это JNDI-имя зависит от поставщика и, следовательно, не является переносимым. mappedName не имеет связи с переносимым глобальным JNDI-именем, которое я описывал ранее.

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

EJB-компоненты с сохранением состояния

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

Book book = new Book();

book.setTitle("Автостопом по Галактике");

book.setPrice(12.5F);

book.setDescription("Научно-фантастический комедийный сериал, созданный Дугласом Адамсом.");

book.setIsbn("1-84023-742-2");

book.setNbOfPage(354);

statefulComponent.addBookToShoppingCart(book);

book.setTitle("Роботы зари");

book.setPrice(18.25F);

book.setDescription("Айзек Азимов, серия про роботов");

book.setIsbn("0-553-29949-2");

book.setNbOfPage(276);

statefulComponent.addBookToShoppingCart(book);

statefulComponent.checkOutShoppingCart();

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

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


Рис. 7.5. Клиенты, осуществляющие доступ к EJB-компонентам с сохранением состояния


Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT