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

······

····

··

В листинге 8.11 в BookEJB внедряется ссылка на объект типа EntityManager, связанный с блоком хранения chapter08PU. Этот блок хранения (заданный в листинге 8.14) должен определить имя источника данных, к которому следует подключиться (jdbc/chapter08DS), не указывая при этом никакие свойства доступа (URL, JDBC-драйвер и т. д.).

<p>Написание DatabasePopulator и определение источника данных</p>

Источник данных jdbc/chapter08DS, необходимый для блока хранения, должен быть создан внутри контейнера EJB. Существует несколько способов сделать это. Самый простой — аннотировать с помощью @DataSourceDefinition любой управляемый компонент (листинг 8.15). Контейнер развернет компонент и создаст источник данных. Другой способ состоит в использовании интерфейса GlassFish, что вы увидите дальше.

Листинг 8.15. Синглтон, развертывающий источник данных и инициализирующий базу данных при запуске

@Singleton

@Startup

@DataSourceDefinition(

··className = "org.apache.derby.jdbc.EmbeddedDataSource",

··name = "java: global/jdbc/chapter08DS",

··user = "app",

··password = "app",

··databaseName = "chapter08DB",

··properties = {"connectionAttributes=;create=true"}

)

public class DatabasePopulator {

··@Inject

··private BookEJB bookEJB;

··private Book h2g2;

··private Book lord;

··@PostConstruct

··private void populateDB() {

····h2g2 = new Book("Изучаем Java EE 7", 35F, "Великая книга", 

"1-8763-9125-7", 605, true);

····lord = new Book("Властелин колец", 50.4f, "Фэнтези", "1-84023-742-2", 

1216, true);

····bookEJB.createBook(h2g2);

····bookEJB.createBook(lord);

··}

··@PreDestroy

··private void clearDB() {

····bookEJB.deleteBook(h2g2);

····bookEJB.deleteBook(lord);

··}

}

Синглтон DatabasePopulator (см. листинг 8.15) используется для инициализации некоторых данных при запуске (@Startup). Во время развертывания контейнер инициализирует синглтон и запустит метод populateDB(), поскольку тот имеет аннотацию @PostConstruct. Этот метод использует BookEJB для создания нескольких книг в базе данных. При выключении контейнер вызовет метод clearDB() (имеющий аннотацию @PostConstruct) для удаления книг из базы данных.

Вместо того чтобы использовать аннотацию @DataSourceDefinition для создания источника данных во время развертывания, вы также можете создать его с помощью консоли администрирования GlassFish или из командной строки. Использование командной строки — очень быстрый и легкий способ. Лишь убедитесь, что Derby и GlassFish запущены до введения следующих команд.

Примечание

@DataSourceDefinition определяет источник данных и, как вы увидите в главе 13 (листинг 13.18), JMS 2.0 использует тот же механизм для определения ресурсов (ConnextionFactory и Destination) благодаря аннотациям @JMSConnectionFactoryDefinition и @JMSDestinationDefinition.

Перед созданием источника данных вам понадобится пул соединений. GlassFish поставляется с набором уже определенных пулов, которые вы можете использовать. Или же можете создать собственный пул с помощью следующей команды:

$ asadmin create-jdbc-connection-pool 

··—datasourceclassname=org.apache.derby.jdbc.ClientDataSource 

··—restype=javax.sql.DataSource 

··—property portNumber=1527:password=APP: user=APP: serverName=localhost: 

··databaseName=chapter08DB: connectionAttributes=;create\=true Chapter08Pool

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

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

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

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

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

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

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

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

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