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

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

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

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

<p>Написание класса Main</p>

Часто приложения 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

<p>Резюме</p>

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

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

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

<p>Глава 9. Транзакции</p>
Перейти на страницу:

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных