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

Используйте утилиту asadmin для развертывания приложения на GlassFish. После выполнения этой команды будет выведено сообщение о результате выполнения операции развертывания.

$ asadmin deploy — force=true target\chapter08-service-1.0.jar

Теперь, когда EJB развернут вместе с сущностью, вспомогательным классом, а также блоком хранения в GlassFish; Derby запущен, создан источник данных, пришло время, чтобы написать и запустить класс Main.

Написание класса Main

Часто приложения Java EE состоят из веб-приложений, работающих в качестве клиентов для компонентов EJB (это описано в главе 10, где компоненты-подложки JSF будет вызывать EJB). А пока будем использовать обычный класс Java.

Класс Main (листинг 8.18) применяет JNDI для получения контекста InitialContext, чтобы он мог найти интерфейс BookEJBRemote (используя портативное имя JNDI). Помните, что этот класс Main выполняется вне контейнера EJB, поэтому внедрение нельзя осуществить. Метод main() начинает работу с поиска удаленного интерфейса EJB, отображая все книги из базы данных, создает новый экземпляр объекта Book и использует метод EJB createBook() для сохранения этой сущности. Затем он изменяет значение названия книги, обновляет книгу и удаляет ее. Поскольку код этого класса Main не имеет контекста хранения, сущность Book рассматривается как отдельный объект, который обрабатывается как обычный класс Java другим классом Java, без использования JPA. В EJB содержится контекст хранения. Кроме того, он использует менеджер сущностей для доступа к базе данных.


Листинг 8.18. Класс Main, вызывающий BookEJBRemote

public class Main {

··public static void main(String[] args) throws NamingException {

····// Выполняется поиск EJB

····Context ctx = new InitialContext();

····BookEJBRemote bookEJB = (BookEJBRemote) ctx.lookup("java: global/ 

····chapter08-service-1.0/BookEJB!org.agoncal.book.javaee7.chapter08. 

BookEJBRemote");

····// Получение и отображение всех книг из базы данных

····List books = bookEJB.findBooks();

····for (Book aBook: books) {

······System.out.println(aBook);

····}

····// Создается экземпляр книги

····Book book = new Book("H2G2", 12.5F, "Научная фантастика", "1-24561-799-0", 

······354, false);

····book = bookEJB.createBook(book);

····System.out.println("Создана книга: " + book);

····book.setTitle("H2G2");

····book = bookEJB.updateBook(book);

····System.out.println("Создана книга: " + book);

····bookEJB.deleteBook(book);

····System.out.println("Книга удалена");

··}

}

Благодаря надстройке Maven Exec просто введите следующую команду, и Maven выполнит класс Main (см. листинг 8.18). Затем вы должны увидеть записи журнала, отображенные в консоли.

$ MVN Exec: Java

Резюме

В этой главе вы узнали, что компоненты, не сохраняющие состояния, и синглтоны имеют одинаковый жизненный цикл, а жизненный цикл компонентов, сохраняющих состояние, несколько отличается. Это потому, что компоненты, сохраняющие состояние, хранят состояние диалога с клиентом и нуждаются в его временной сериализации в надежное хранилище (пассивизации). Аннотации методов обратного вызова позволяют добавить бизнес-логику в ваш компонент до или после того, как произойдет какое-либо событие (@PostConstruct, @PreDestroy и т. д.).

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

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

Глава 9. Транзакции

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

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

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

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

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

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

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

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

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