Энтони Гонсалвес - Изучаем Java EE 7
- Название:Изучаем Java EE 7
- Автор:
- Жанр:
- Издательство:Питер
- Год:2014
- Город:СПб.
- ISBN:978-5-496-00942-3
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Энтони Гонсалвес - Изучаем Java EE 7 краткое содержание
Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода.
Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP). В ней вы найдете максимально ценную информацию, изложенную с точки зрения эксперта по технологиям Java для предприятий.
Благодаря этой книге вы:
— познакомитесь с новейшей версией платформы Java EE;
— исследуете и научитесь использовать API EJB и JPA — от компонентов-сущностей, компонентов-сеансов до компонентов, управляемых сообщениями, и многого другого;
— откроете для себя API для разработки на веб-уровне, в частности JSF, Facelet и Expression Language;
— научитесь обращаться с веб-службами SOAP и RESTful, а также с другими службами, доступными в новейшей версии Java EE;
— узнаете, как создавать динамические пользовательские интерфейсы для корпоративных и транзакционных Java-приложений.
Изучаем Java EE 7 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
ic.getMethod(). getName());
····try {
······return ic.proceed();
····} finally {
······logger.exiting(ic.getTarget(). getClass(). getName(),
ic.getMethod(). getName());
····}
··}
}
@InterceptorBinding
@Target({METHOD, TYPE})
@Retention(RUNTIME)
public @interface Loggable { }
Написание класса Main
Для запуска демонстрационного приложения нам необходим основной класс (назовем его Main), который приводит в действие контейнер CDI и вызывает метод BookService.createBook. CDI 1.1 не имеет стандартного API для начальной загрузки контейнера, поэтому код в листинге 2.51 специфичен для Weld. В первую очередь он инициализирует WeldContainer и возвращает полностью сконструированную и внедренную сущность BookService.class. Затем вызов метода createBook станет использовать все сервисы контейнера: IsbnGenerator и Logger будут внедрены в BookService с последующим созданием и отображением Book с номером ISBN.
public class Main {
··public static void main(String[] args) {
····Weld weld = new Weld();
····WeldContainer container = weld.initialize();
····BookService bookService =
container.instance(). select(BookService.class). get();
····Book book = bookService.createBook("H2G2", 12.5f, "Интересная книга
········································на тему высоких технологий");
····System.out.println(book);
····weld.shutdown();
··}
}
Код в листинге 2.51 специфичен для Weld, поэтому его нельзя портировать. Он не будет работать на других реализациях CDI, таких как OpenWebBeans (Apache) или CanDI (Caucho). Одна из целей будущего релиза CDI — стандартизировать API для начальной загрузки контейнера.
Приведение в действие CDI с beans.xml
Чтобы привести в действие CDI и позволить демонстрационному приложению заработать, нам требуется файл beans.xml в пути к классам приложения. Как следует из листинга 2.52, файл beans.xml совершенно пуст, но без него нельзя будет задействовать CDI, осуществить обнаружение компонентов либо внедрение.
·······xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
·······xsi: schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
····························http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
·······version="1.1" bean-discovery-mode="all">
Компиляция и выполнение с помощью Maven
Теперь необходимо скомпилировать все классы перед запуском класса Main и интеграционным тестом BookServiceIT. Файл pom.xml в листинге 2.53 объявляет все необходимые зависимости для компиляции кода (org.jboss.weld.se: weld-se содержит APICDI и реализацию Weld) и запуска теста (junit: junit). Указание версии 1.7 в maven-compiler-plugin означает, что вы хотите использовать Java SE 7 (1.7). Заметьте, что мы применяем exec-maven-plugin для того, чтобы иметь возможность выполнить класс Main с помощью фреймворка Maven.
·········xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
·········xsi: schemaLocation="http://maven.apache.org/POM/4.0.0
·········
·········
http://maven.apache.org/xsd/maven-4.0.0.xsd">·········
···
··4.0.0
··
····org.agoncal.book.javaee7
····chapter02
····1.0
··
··org.agoncal.book.javaee7.chapter02
··chapter02-putting-together
··1.0
··
····
······org.jboss.weld.se
······weld-se
······2.0.0
····
····
······junit
······junit
······4.11
······test
····
··
··
····
······
········org.apache.maven.plugins
········maven-compiler-plugin
········2.5.1
········
··········1.7
··········1.7
········
······
······
········org.codehaus.mojo
········exec-maven-plugin
········1.2.1
········
··········
············
··············java
············
············
··············org.agoncal.book.javaee7.chapter02.Main
············
··········
········
······
······
········org.apache.maven.plugins
········maven-failsafe-plugin
········2.12.4
········
··········
············integration-test
············
··············integration-test
··············verify
············
··········
········
······
····
··
Для компиляции классов откройте командную строку в корневом каталоге, содержащем файл pom.xml, и введите следующую команду Maven:
$ mvn compile
Запуск класса Main
Благодаря exec-maven-plugin, сконфигурированному в файле pom.xml в листинге 2.53, теперь мы можем запустить класс Main, определенный в листинге 2.51. Откройте командную строку в корневом каталоге, содержащем файл pom.xml, и введите следующую команду Maven:
$ mvn exec: java
После этого начнется выполнение класса Main, который использует BookService для создания Book. Благодаря внедрению Logger будет отображать следующие выходные данные:
Info: Сгенерирован ISBN: 13-84356-18643 41788
Book{title='H2G2', price=12.5, description='Интересная книга на тему высоких технологий', isbn='13-84356-18643 41788'}
Написание класса BookServiceIT
Листинг 2.54 показывает, как класс BookServiceIT тестирует компонент BookService. Он использует тот же API, специфичный для Weld, для начальной загрузки CDI в качестве класса Main, показанного в листинге 2.51. Как только вызывается BookService.createBook, интеграционный тест проверяет, чтобы сгенерированный номер начинался с "MOCK". Это происходит потому, что интеграционный тест использует альтернативу MockGenerator (вместо IsbnGenerator).
public class BookServiceIT {
··@Test
··public void shouldCheckNumberIsMOCK () {
····Weld weld = new Weld();
····WeldContainer container = weld.initialize();
····BookService bookService =
container.instance(). select(BookService.class). get();
····Book book = bookService.createBook("H2G2", 12.5f, "Интересная книга
········································на тему высоких технологий");
····assertTrue(book.getNumber(). startsWith("MOCK"));
Интервал:
Закладка: