<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 и соответствующая спецификация (подробнее об этом читайте в следующих главах).
Файл | Спецификация | Местоположение |
---|---|---|
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 и т. д.). На протяжении всей своей истории люди создавали стандарты, чтобы облегчить коммуникацию и обмен. В качестве наиболее выдающихся примеров можно привести язык, валюту, время, навигацию, системы измерений, инструменты, железные дороги, электричество, телеграф, телефонию, протоколы и языки программирования.