Энтони Гонсалвес - Изучаем Java EE 7

Тут можно читать онлайн Энтони Гонсалвес - Изучаем Java EE 7 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2014. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Энтони Гонсалвес - Изучаем Java EE 7 краткое содержание

Изучаем Java EE 7 - описание и краткое содержание, автор Энтони Гонсалвес, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java.
Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации 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 - читать онлайн бесплатно полную версию (весь текст целиком)

Изучаем Java EE 7 - читать книгу онлайн бесплатно, автор Энтони Гонсалвес
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

• Класс Main использует BookService, чтобы создать Book и сгенерировать номер с помощью IsbnGenerator. Интеграционный тест BookServiceIT использует альтернативу MockGenerator для генерации имитационного номера книги.

Классы, описанные на рис. 2.7, следуют стандартной структуре каталога Maven:

• src/main/java — каталог для всех компонентов, квалификаторов, перехватчиков и класса Main;

• src/main/resources — пустой файл beans.xml, поэтому мы можем инициировать CDI без альтернатив и перехватчиков;

• src/test/java — каталог для интеграционных тестов BookServiceIT и альтернативы MockGenerator;

• src/test/resources — файл beans.xml, обеспечивающий работу альтернативы MockGenerator и перехватчика LoggingInterceptor;

• pom.xml — модель объекта проекта Maven (POM), описывающая проект и его зависимости.

Написание классов Book и BookService

Приложение CD-Bookstore использует класс BookService для создания книг (листинг 2.40). Java-объект Book (листинг 2.41) имеет название, описание и цену. Номер книги (ISBN или ISSN) генерируется внешним сервисом.

Листинг 2.40. BookService, использующий внедрение зависимости иперехват

@Loggable

public class BookService {

··@Inject @ThirteenDigits

··private NumberGenerator numberGenerator;

··public Book createBook(String title, Float price, String description) {

····Book book = new Book(title, price, description);

····book.setNumber(numberGenerator.generateNumber());

····return book;

··}

}

BookService располагает одним методом, который берет название, цену и описание и возвращает POJO Book. Чтобы задать ISBN-номер книги, этот класс использует внедрение (@Inject) и квалификаторы (@ThirteenDigits) для вызова метода generateNumber, принадлежащего IsbnGenerator.

Листинг 2.41. POJO-объект Book

public class Book {

··private String title;

··private Float price;

··private String description;

··private String number;

··//Конструкторы, геттеры, сеттеры

}

В листинге 2.40 BookService аннотирован связкой с перехватчиком @Loggable (листинг 2.50). Когда эта связка действует, она регистрирует момент входа в метод и выхода из него.

Написание классов NumberGenerator

Класс BookService в листинге 2.40 зависит от интерфейса NumberGenerator (листинг 2.42). Этот интерфейс обладает методом, который генерирует и возвращает номер книги. Интерфейс реализуется классами IsbnGenerator, IssnGenerator и MockGenerator.

Листинг 2.42. Интерфейс NumberGenerator

public interface NumberGenerator {

··String generateNumber();

}

Класс IsbnGenerator (листинг 2.43) сопровождается квалификатором @ThirteenDigits. Это сообщает CDI о том, что сгенерированный номер состоит из 13 цифр. Заметьте, что класс IsbnGenerator также использует внедрение для получения java.util.logging.Logger (произведенного в листинге 2.48) и связывание с перехватчиком @Loggable для регистрации момента входа в метод и выхода из него.

Листинг 2.43. IsbnGenerator генерирует тринадцатизначный номер

@ThirteenDigits

public class IsbnGenerator implements NumberGenerator {

··@Inject

··private Logger logger;

··@Loggable

··public String generateNumber() {

····String isbn = "13-84356-" + Math.abs(new Random(). nextInt());

····logger.info("Сгенерирован ISBN: " + isbn);

····return isbn;

··}

}

Класс IssnGenerator в листинге 2.44 — это восьмизначная реализация NumberGenerator.

Листинг 2.44. IssnGenerator генерирует восьмизначный номер

@EightDigits

public class IssnGenerator implements NumberGenerator{

··@Inject

··private Logger logger;

··@Loggable

··public String generateNumber() {

····String issn = "8-" + Math.abs(new Random(). nextInt());

····logger.info("Сгенерирован ISBN: " + issn);

····return issn;

··}

}

Класс MockGenerator в листинге 2.45 является альтернативой IsbnGenerator (поскольку также сопровождается квалификатором @ThirteenDigits). MockGenerator используется только для интеграционных тестов, так как его можно активизировать только в файле beans.xml тестовой среды (см. листинг 2.55).

Листинг 2.45. Имитационный генератор чисел, применяемый вкачестве альтернативы тринадцатизначного числа

@Alternative

@ThirteenDigits

public class MockGenerator implements NumberGenerator {

··@Inject

··private Logger logger;

··@Loggable

··public String generateNumber() {

····String mock = "MOCK-" + Math.abs(new Random(). nextInt());

····logger.info("Сгенерирован Mock: " + mock);

····return mock;

··}

}

Написание квалификаторов

Поскольку существует несколько реализаций NumberGenerator, CDI необходимо квалифицировать каждый компонент и каждую точку внедрения во избежание неоднозначного внедрения. Для этого он использует два квалификатора: Thirteen Digits (листинг 2.46) и EightDigits (листинг 2.47), оба из которых аннотированы javax.inject.Qualifier и не имеют членов (просто пустые аннотации). Аннотация @ThirteenDigits применяется в компоненте IsbnGenerator (см. листинг 2.43), а также в точке внедрения BookService (см. листинг 2.40).

Листинг 2.46. Тринадцатизначный квалификатор

@Qualifier

@Retention(RUNTIME)

@Target({FIELD, TYPE, METHOD})

public @interface ThirteenDigits { }

Листинг 2.47. Восьмизначный квалификатор

@Qualifier

@Retention(RUNTIME)

@Target({FIELD, TYPE, METHOD})

public @interface EightDigits { }

Написание автоматического журнала

Демонстрационное приложение использует запись в журнал несколькими способами. Как вы могли видеть в листингах 2.43–2.45, все реализации NumberGenerator применяют внедрение для получения java.util.logging.Logger и записи в журнал. Поскольку Logger входит в состав JDK, он не является внедряемым по умолчанию (архив rt.jar не содержит файла beans.xml) и вам необходимо произвести его. Класс LoggingProducer в листинге 2.48 имеет метод продюсера (produceLogger), аннотированный @Produces. Этот метод создаст и вернет Logger, сопровождаемый параметрами имени класса точки внедрения.

Листинг 2.48. Механизм записи вжурнал

public class LoggingProducer {

··@Produces

··public Logger produceLogger(InjectionPoint injectionPoint) {

····return Logger.getLogger(injectionPoint.getMember(). getDeclaringClass(). getName());

··}

}

Класс LoggingInterceptor в листинге 2.49 использует произведенный Logger для регистрации входа в методы и выхода из них. Поскольку запись в журнал может рассматриваться как сквозная функциональность, она отдельно реализуется в виде перехватчика (@AroundInvoke на logMethod). Класс LoggingInterceptor определяет связь с перехватчиком @Loggable (листинг 2.50) и может впоследствии применяться в любом компоненте (например, BookService в листинге 2.40).

Листинг 2.49. Перехватчик записывает вжурнал методы при входе и при выходе

@Interceptor

@Loggable

public class LoggingInterceptor {

··@Inject

··private Logger logger;

··@AroundInvoke

··public Object logMethod(InvocationContext ic) throws Exception {

····logger.entering(ic.getTarget(). getClass(). getName(), картинка 26

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Энтони Гонсалвес читать все книги автора по порядку

Энтони Гонсалвес - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Изучаем Java EE 7 отзывы


Отзывы читателей о книге Изучаем Java EE 7, автор: Энтони Гонсалвес. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x