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

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

Изучаем Java EE 7: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Изучаем Java EE 7»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Листинг 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

ic.getMethod(). getName());

····try {

······return ic.proceed();

····} finally {

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

ic.getMethod(). getName());

····}

··}

}

Листинг 2.50. Связь сперехватчиком Loggable

@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.

Листинг 2.51. Класс Main использует контейнер CDI для вызова BookService

public class Main {

··public static void main(String[] args) {

····Weld weld = new Weld();

····WeldContainer container = weld.initialize();

····BookService bookService = картинка 28

container.instance(). select(BookService.class). get();

····Book book = bookService.createBook("H2G2", 12.5f, "Интересная книга картинка 29

········································на тему высоких технологий");

····System.out.println(book);

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

Интервал:

Закладка:

Сделать

Похожие книги на «Изучаем Java EE 7»

Представляем Вашему вниманию похожие книги на «Изучаем Java EE 7» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Изучаем Java EE 7»

Обсуждение, отзывы о книге «Изучаем Java EE 7» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x