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

Эта команда создает Chapter08Pool с использованием источника данных Derby и набора свойств для соединения с базой данных: название (chapter08DB), сервер (localhost) и порт (1527), который он слушает, пользователь (APP) и пароль (APP) для подключения. Если вы сейчас опросите этот источник данных, Derby создаст базу данных автоматически (потому что вы установили значения connectionAttributes=;create\=TRUE). Чтобы опросить источник данных, используйте следующую команду:

$ asadmin ping-connection-pool Chapter08Pool

После успешного выполнения этой команды вы должны увидеть каталог chapter08DB на жестком диске в том месте, где Derby хранит свои данные. Будут созданы база данных и пул соединений, и теперь вам нужно объявить источник данных jdbc/chapter08DS и связать его с только что созданным пулом следующим образом:

$ asadmin create-jdbc-resource — connectionpoolid 

··Chapter08Pool jdbc/chapter08DS

Для того чтобы получить список всех источников данных, хранящихся с помощью GlassFish, введите такую команду:

$ asadmin list-jdbc-resources

<p>Написание интеграционного теста BookEJBIT</p>

В версии 1.x и 2.x EJB интеграционное тестирование нашего BookEJB было бы затруднительно: вам пришлось бы использовать особенности определенных серверов приложений или внести изменения в код. С новым встроенным контейнером EJB становится проверяемым классом так же просто, как и любой другой класс, так как он может работать в нормальной среде Java SE. Единственное, что необходимо сделать, — добавить конкретный файл с расширением JAR в каталог, где хранится ваш файл, как это делается в файле pom.xml (он показан ниже, в листинге 8.17) с помощью зависимости glassfish-embedded-all.

В главе 4 я объяснил, как можно провести интеграционное тестирование для сущности со встроенной базой данных, поэтому я не буду вдаваться в подробности по данному вопросу. Для того чтобы произвести интеграционное тестирование EJB, вам следует использовать встроенную в память базу данных Derby, различные блоки хранения и встроенный в память контейнер EJB. Все эти компоненты уже готовы и работают в том же процессе, требуется только создать тестовый класс JUnit (листинг 8.16). Этот тест инициализирует EJBContainer(EJBContainer.createEJBContainer()), получает контекст JNDI, ищет EJB и использует его для создания и удаления книг, а также их извлечения во встроенную в память базу данных и из нее. Благодаря конструкции try-with-resources встроенный контейнер закрывается автоматически в конце блока try.

Листинг 8.16. Интеграционное тестирование BookEJB с использованием встраиваемого контейнера

public class BookEJBIT {

··@Test

··public void shouldCreateABook() throws Exception {

····Map properties = new HashMap<>();

····properties.put(EJBContainer.MODULES, new File("target/classes"));

····try (EJBContainer ec = EJBContainer.createEJBContainer(properties)) {

······Contextctx = ec.getContext();

······// Проверяет зависимости JNDI (источники данных и EJB)

······assertNotNull(ctx.lookup("java: global/jdbc/chapter08DS"));

······assertNotNull(

ctx.lookup("java: global/classes/BookEJB!org.agoncal.book.javaee7.chapter08.BookEJBRemote"));

······assertNotNull(

ctx.lookup("java: global/classes/BookEJB!org.agoncal.book.javaee7.chapter08.BookEJB"));

······// Ищет EJB

······BookEJB bookEJB = (BookEJB) 

ctx.lookup("java: global/classes/BookEJB!org.agoncal.book.javaee7.chapter08.BookEJB");

······// Ищет все книги и убеждается, что их две (они добавлены

······// в базу с помощью DBPopulator)

······assertEquals(2, bookEJB.findBooks(). size());

······// Создает книгу

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

······// Сохраняет книгу в базе данных

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

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

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

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

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

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

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

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

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