Статьи

Дескрипторы развертывания Java EE 7

Как вы уже знаете,  Java EE 7 выйдет через несколько дней . Есть много новых функций, и я не буду сейчас рассказывать об этих новинках. Я просто хочу упомянуть, что большинство пространств имен дескрипторов развертывания XML  были обновлены . Ничто не изменит вашу жизнь как разработчика, но, как я уже упоминал в  блоге Aquarium,  « это символ. В течение многих лет нам было интересно, что произойдет с пространствами имен java.sun.com. Большинство из нас думали, что оно будет переименовано в java.oracle.com. Но нет, он вернулся туда, где он изначально принадлежал, к JCP. В последнее время JCP стал более прозрачным (т.е. JCP.next), и наличие пространств имен JCP усиливает этот шаг ».

В основном, вместо того, чтобы  http://java.sun.com/xml/ns/javaee  использовать  http://xmlns.jcp.org/xml/ns/javaee . И, конечно же, большинство номеров версий XSD были обновлены. Итак, вот некоторые из новых пространств имен Java EE 7.

CDI 1.1

Дескриптор развертывания CDI (beans.xml) является обязательным, даже если он остается полностью пустым. Обратите внимание, что в CDI 1.1 ( JSR 346 ) есть новый элемент режима bean-discovery-mode, который сообщает CDI об обнаружении всех bean-компонентов, ни одного, или только аннотированных.

<beans 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/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="all">
</beans>

Bean Validation 1.1

Bean Validation 1.1 ( JSR 349 ) — единственная спецификация,  которая не обновила пространство имен  и все еще использует  http://jboss.org/xml/ns . Обратите внимание, что спецификации Bean Validation и CDI ведутся RedHat.

<validation-config
        xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.1.xsd"
        version="1.1">
</validation-config>

constraints.xml

<constraint-mappings
        xmlns="http://jboss.org/xml/ns/javax/validation/mapping"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd"
        version="1.1">
</constraint-mappings>

JPA 2.1

Только обязательный дескриптор развертывания в Java EE 7, файлы JPA 2.1 ( JSR 338 ) persistence.xml представляют новые стандартные свойства для генерации схемы (подробнее об этом в следующем посте).

Persistance.xml 

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">
</persistence>

Mapping.xml 

<entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd"
                 version="2.1">
</entity-mappings>

EJB 3.2

Не так много изменений в EJB 3.2 ( JSR 342 ) по сравнению с 3.1. Таким образом, ejb-jar.xml аккуратно следует этим незначительным обновлениям.

<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">
</ejb-jar>

Сервлет 3.1

Как и в предыдущем выпуске, web.xml в Servlet 3.1 ( JSR 340 ) является необязательным, а также web-фрагмент.xml.

<web-app 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/web-app_3_1.xsd"
         version="3.1">
</web-app>

JSF 2.2

В JSF 2.2 ( JSR 344 ) face-config.xml по-прежнему необязателен. Обратите внимание, что пространства имен библиотек компонентов также были обновлены

<faces-config 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/web-facesconfig_2_2.xsd"
              version="2.2">
</faces-config>

aJSFPage.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
</html>

JAX-WS 2.2

Пейзаж WS- * определен в нескольких спецификациях (JAX-WS 2.2a с  JSR 224 , веб-службы 1.4 с  JSR 109  и метаданные веб-служб 2.1 с  JSR 181 ). Дескриптор развертывания webservices.xml был обновлен новым пространством имен.

<webservices 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/javaee_web_services_1_4.xsd"
             version="1.4">
</webservices>

Вывод

При разработке приложения Java EE 7 обязательно используйте  новые пространства имен . Я только что перечислил здесь наиболее распространенные дескрипторы развертывания, но в Java EE 7 есть несколько дополнительных (javaee_7.xsd, application_7.xsd, application-client_7.xsd, batchXML_1_0.xsd, jobXML_1_0.xsd…)).