Библиотека knigago >> Компьютеры: Разработка ПО >> Программирование: прочее >> Изучаем Java EE 7

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

Изучаем Java EE 7
Книга - Изучаем Java EE 7.  Энтони Гонсалвес  - прочитать полностью в библиотеке КнигаГо
Название:
Изучаем Java EE 7
Энтони Гонсалвес

Жанр:

Руководства и инструкции, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, Java, Java Script

Изадано в серии:

неизвестно

Издательство:

Питер

Год издания:

ISBN:

978-5-496-00942-3

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Изучаем 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, программирование на Java, веб-разработка, пользовательский интерфейс (UI)

Читаем онлайн "Изучаем Java EE 7". [Страница - 298]

ресурса, поставщику ресурса для правильного выполнения запроса требуется контекстная информация. Аннотация @javax.ws.rs.core.Context предназначена для внедрения в атрибут или параметр метода следующих классов: HttpHeaders, UriInfo, Request, SecurityContext и Providers. Например, в листинге 15.15 показан код, внедряющий UriInfo таким образом, что этот класс может строить URI, а также добавляющий HttpHeaders для возвращения определенной заголовочной информации.


Листинг 15.15. Ресурс Customer, получающий HttpHeaders и UriInfo
@Path("/customer")

public class CustomerRestService {

··@Context

··UriInfo uriInfo;


··@Inject

··private CustomerEJB customerEJB;


··@GET

··@Path("media")

··public String getDefaultMediaType(@Context HttpHeaders headers) {

····List<MediaType> mediaTypes = headers.getAcceptableMediaTypes();

····return mediaTypes.get(0). toString();

··}


··@GET

··@Path("language")

··public String getDefaultLanguage(@Context HttpHeaders headers) {

····List<String> mediaTypes = Книгаго: Изучаем Java EE 7. Иллюстрация № 372

······headers.getRequestHeader(HttpHeaders.ACCEPT_LANGUAGE);

····return mediaTypes.get(0);

··}


··@POST

··@Consumes(MediaType.APPLICATION_XML)

··public Response createCustomer(Customer cust) {

····Customer customer = customerEJB.persist(cust);


····URI bookUri = Книгаго: Изучаем Java EE 7. Иллюстрация № 373

······uriInfo.getAbsolutePathBuilder(). path(customer.getId()). build();

····return Response.created(bookUri). build();

··}

}

Как было показано выше в примерах с HTTP, информация передается между клиентом и сервером не только в теле объекта, но и в заголовках (Date, Server, Content-Type и т. д.). HTTP-заголовки участвуют в работе единообразного интерфейса, а веб-службы REST используют их «в оригинальных значениях». Вам как разработчику ресурсов может понадобиться доступ к HTTP-заголовкам. Именно для этого служит интерфейс javax.ws.rs.core.HttpHeaders. Экземпляр HttpHeaders можно внедрить в атрибут или параметр метода с помощью аннотации @Context, так как класс HttpHeaders — это словарь с вспомогательными методами для доступа к значениям заголовков без учета регистра. В листинге 15.15 служба возвращает стандартные значения Accept-Language и MediaType.


Примечание
В JAX-RS 2.0 аннотация @Context используется при внедрении контекстной информации. К сожалению, аннотация @Inject здесь не сработает, так как в данной версии выравнивание CDI не может быть полностью заархивировано. Остается надеяться, что в будущих версиях JAX-RS мы сможем широко использовать CDI и работать всего с одной аннотацией: @Inject.

Поставщик объектов

Когда мы получаем объекты в запросах или отсылаем в ответах, реализации JAX-RS требуется способ для преобразования представлений в тип Java и обратно. Эту работу выполняют поставщики объектов, обеспечивающие отображение между представлениями и ассоциированными с ними типами Java. В качестве примера можно привести JAXB, который отображает объект на XML-представление и наоборот. Если стандартных поставщиков XML и JSON недостаточно, то вы можете разработать собственные специальные поставщики объектов. Можете даже определить для этого свой формат. В таком случае потребуется предоставить среде времени исполнения JAX-RS способ для считывания/записи вашего специального формата в объект или из него, реализовав для этого собственный поставщик объектов. Существует две разновидности поставщиков объектов: MessageBodyReader и MessageBodyWriter.

Допустим, вы хотите перевести ваш компонент Customer в custom/format, чтобы он принял вид 1234/John/Smith. Как видите, в качестве разделителя используется символ /, причем первый маркер — это пользовательский идентификатор, второй — имя, последний — фамилия. В первую очередь вам потребуется класс (записывающий), который будет принимать компонент Customer и отображать его в теле ответа. В листинге 15.16 показан класс CustomCustomerWriter, который должен реализовывать интерфейс javax.ws.rs.ext.MessageBodyWriter и сопровождаться аннотацией @Provider. Аннотация @Produces указывает наш специальный медиатип ("custom/format"). Как видите, метод writeTo преобразует компонент Customer в поток данных, следующий за специальным форматом.


Листинг 15.16. Поставщик, порождающий специальное представление Customer
@Provider

@Produces("custom/format")

public class CustomCustomerWriter implements MessageBodyWriter<Customer> {

··@Override

··public boolean isWriteable(Class<?> type, Type genericType, Книгаго: Изучаем Java EE 7. Иллюстрация № 374

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.