Выбрать главу

<ejb-jar xmlns="http://xmlns.jcp.org/xml/ns/javaee" 

·········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/ejb-jar_3_2.xsd" 

·········version="3.2" >

··<enterprise-beans>

····<session>

······<ejb-name>ItemEJB</ejb-name>

······<remote>org.agoncal.book.javaee7.ItemRemote</remote>

······<local>org.agoncal.book.javaee7.ItemLocal</local>

······<local-bean/>

······<ejb-class>org.agoncal.book.javaee7.ItemEJB</ejb-class>

······<session-type>Stateless</session-type>

······<transaction-type>Container</transaction-type>

····</session>

··</enterprise-beans>

</ejb-jar>

Для того чтобы дескрипторы развертывания учитывались при работе, они должны упаковываться вместе с компонентами в специальный каталог META-INF или WEB-INF. В табл. 1.1 приведен список дескрипторов развертывания Java EE и соответствующая спецификация (подробнее об этом читайте в следующих главах).

Таблица 1.1. Дескрипторы развертывания в Java EE0
Файл Спецификация Местоположение
application.xml Java EE META-INF
application-client.xml Java EE META-INF
beans.xml CDI META-INF или WEB-INF
ra.xml JCA META-INF
ejb-jar.xml EJB META-INF или WEB-INF
faces-config.xml JSF WEB-INF
persistence.xml JPA META-INF
validation.xml Валидация компонентов META-INF или WEB-INF
web.xml Сервлет WEB-INF
web-fragment.xml Сервлет WEB-INF
webservices.xml Веб-службы SOAP META-INF или WEB-INF

Начиная с Java EE 5, большинство дескрипторов развертывания опциональны, и вместо них можно использовать аннотацию. Но вы также можете взять для вашего приложения наилучшее от обоих методов. Самое большое преимущество аннотаций в том, что они могут значительно сократить количество кода, который необходимо написать разработчику. Кроме того, используя аннотацию, вы можете избежать необходимости в дескрипторе развертывания. С другой стороны, дескрипторы развертывания — это внешние XML-файлы, для замены которых не требуется изменений исходного кода и рекомпиляции. Если вы используете сразу оба метода, то во время развертывания приложения или компонента метаданные переопределяются дескриптором развертывания (то есть XML приоритетнее аннотаций).

Примечание

Сегодня в Java-программировании предпочтительнее использование аннотаций, а не дескрипторов развертывания. Это происходит в рамках тенденции перехода от двуязычного программирования (Java + XML) к одноязычному (Java). Точно так же приложение проще анализировать и создавать его прототип, когда все (данные, методы и метаданные с аннотациями) хранится в одном месте.

Java EE использует понятие программирования путем исключения (также известное как программирование по соглашениям), когда большая часть общего поведения не требует сопровождения метаданными («в программировании метаданные являются исключением, контейнер заботится о настройках по умолчанию»). Это означает, что даже при малом количестве аннотаций или XML контейнер может выдать стандартный набор настроек с заданным по умолчанию поведением.

Стандарты

Платформа Java EE основана на нескольких стандартах. Это означает, что Java EE проходит процесс стандартизации, принятый группой Java Community Process, и описывается в спецификациях. На самом деле Java EE объединяет несколько других спецификаций (или запросов на спецификацию Java), поэтому ее можно называть обобщающей. Вы можете спросить, почему стандарты так важны, если наиболее успешные Java-фреймворки не стандартизированы (Struts, Spring и т. д.). На протяжении всей своей истории люди создавали стандарты, чтобы облегчить коммуникацию и обмен. В качестве наиболее выдающихся примеров можно привести язык, валюту, время, навигацию, системы измерений, инструменты, железные дороги, электричество, телеграф, телефонию, протоколы и языки программирования.