Изучаем Java EE 7 | страница 15



>······

>······org.agoncal.book.javaee7.ItemEJB

>······Stateless

>······Container

>····

>··

>

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


Таблица 1.1. Дескрипторы развертывания в Java EE0
ФайлСпецификацияМестоположение
application.xmlJava EEMETA-INF
application-client.xmlJava EEMETA-INF
beans.xmlCDIMETA-INF или WEB-INF
ra.xmlJCAMETA-INF
ejb-jar.xmlEJBMETA-INF или WEB-INF
faces-config.xmlJSFWEB-INF
persistence.xmlJPAMETA-INF
validation.xmlВалидация компонентовMETA-INF или WEB-INF
web.xmlСервлетWEB-INF
web-fragment.xmlСервлетWEB-INF
webservices.xmlВеб-службы SOAPMETA-INF или WEB-INF

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


Примечание

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


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