Читаем Изучаем 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

Написание интеграционного теста BookEJBIT

В версии 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);

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

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

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

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

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

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

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

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

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

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