В этой части приложения перечислены XML-схемы, относящиеся к технологиям интеграции.

Схема jee

Элементы jee позволяют решать проблемы, связанные с конфигурацией Java EE (Java Enterprise Edition), такие как поиск объекта через JNDI и определение ссылок на EJB.

Чтобы использовать эти элементы в схеме jdbc, необходимо обеспечить следующую преамбулу в верхней части вашего конфигурационного XML-файла для Spring. В следующем фрагменте мы ссылаемся на корректную схему, чтобы элементы в пространстве имен context стали доступны:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/jee https://www.springframework.org/schema/jee/spring-jee.xsd">
    <!-- определения бинов здесь -->
</beans>

<jee:jndi-lookup/> (простая)

The following example shows how to use JNDI to look up a data source without the jee schema:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/MyDataSource"/>
</bean>
<bean id="userDao" class="com.foo.JdbcUserDao">
    <!-- Spring будет выполнять приведение автоматически (как обычно) -->
    <property name="dataSource" ref="dataSource"/>
</bean>

В следующем примере показано, как использовать JNDI для поиска источника данных с использованием схемы jee:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/MyDataSource"/>
<bean id="userDao" class="com.foo.JdbcUserDao">
    <!-- Spring будет выполнять приведение автоматически (как обычно) -->
    <property name="dataSource" ref="dataSource"/>
</bean>

<jee:jndi-lookup/> (with Single JNDI Environment Setting)

В следующем примере показано, как использовать JNDI для поиска переменной окружения без использования jee:

<bean id="simple" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/MyDataSource"/>
    <property name="jndiEnvironment">
        <props>
            <prop key="ping">pong</prop>
        </props>
    </property>
</bean>

В следующем примере показано, как использовать JNDI для поиска переменной окружения с использованием jee:

<jee:jndi-lookup id="simple" jndi-name="jdbc/MyDataSource">
    <jee:environment>ping=pong</jee:environment>
</jee:jndi-lookup>

<jee:jndi-lookup/> (with Multiple JNDI Environment Settings)

В следующем примере показано, как использовать JNDI для поиска нескольких переменных окружения без использования jee:

<bean id="simple" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/MyDataSource"/>
    <property name="jndiEnvironment">
        <props>
            <prop key="sing">song</prop>
            <prop key="ping">pong</prop>
        </props>
    </property>
</bean>

В следующем примере показано, как использовать JNDI для поиска нескольких переменных окружения с использованием jee:

<jee:jndi-lookup id="simple" jndi-name="jdbc/MyDataSource">
    <!-- разделенные новой строкой пары "ключ-значение" для окружения (стандартный формат Properties) -->
    <jee:environment>
        sing=song
        ping=pong
    </jee:environment>
</jee:jndi-lookup>

<jee:jndi-lookup/> (Сложная)

В следующем примере показано, как использовать JNDI для поиска источника данных и ряда различных свойств без использования jee:

<bean id="simple" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/MyDataSource"/>
    <property name="cache" value="true"/>
    <property name="resourceRef" value="true"/>
    <property name="lookupOnStartup" value="false"/>
    <property name="expectedType" value="com.myapp.DefaultThing"/>
    <property name="proxyInterface" value="com.myapp.Thing"/>
</bean>

В следующем примере показано, как использовать JNDI для поиска источника данных и ряда различных свойств с использованием jee:

<jee:jndi-lookup id="simple"
        jndi-name="jdbc/MyDataSource"
        cache="true"
        resource-ref="true"
        lookup-on-startup="false"
        expected-type="com.myapp.DefaultThing"
        proxy-interface="com.myapp.Thing"/>

<jee:local-slsb/> (Простая)

Элемент <jee:local-slsb/> конфигурирует ссылку на локальный сессионный EJB-бин, который не сохраняет состояние.

В следующем примере показано, как сконфигурировать ссылку на локальный сессионный EJB-бин, не сохраняющий состояние, без использования jee:

<bean id="simple"
        class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean">
    <property name="jndiName" value="ejb/RentalServiceBean"/>
    <property name="businessInterface" value="com.foo.service.RentalService"/>
</bean>

В следующем примере показано, как сконфигурировать ссылку на локальный сессионный EJB-бин, не сохраняющий состояние, с использованием jee:

<jee:local-slsb id="simpleSlsb" jndi-name="ejb/RentalServiceBean"
        business-interface="com.foo.service.RentalService"/>

<jee:local-slsb/> (Сложная)

Элемент <jee:local-slsb/> конфигурирует ссылку на локальный сессионный EJB-бин, который не сохраняет состояние.

В следующем примере показано, как сконфигурировать ссылку на локальный сессионный EJB-бин, не сохраняющий состояние, и ряд свойств без использования jee:

<bean id="complexLocalEjb"
        class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean">
    <property name="jndiName" value="ejb/RentalServiceBean"/>
    <property name="businessInterface" value="com.example.service.RentalService"/>
    <property name="cacheHome" value="true"/>
    <property name="lookupHomeOnStartup" value="true"/>
    <property name="resourceRef" value="true"/>
</bean>

В следующем примере показано, как сконфигурировать ссылку на локальный сессионный EJB-бин, не сохраняющий состояние, и ряд свойств с использованием jee:

<jee:local-slsb id="complexLocalEjb"
        jndi-name="ejb/RentalServiceBean"
        business-interface="com.foo.service.RentalService"
        cache-home="true"
        lookup-home-on-startup="true"
        resource-ref="true">

<jee:remote-slsb/>

Элемент <jee:remote-slsb/> конфигурирует ссылку на удаленный сессионный EJB-бин, не сохраняющий состояние.

В следующем примере показано, как сконфигурировать ссылку на удаленный сессионный EJB-бин, не сохраняющий состояние, без использования jee:

<bean id="complexRemoteEjb"
        class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
    <property name="jndiName" value="ejb/MyRemoteBean"/>
    <property name="businessInterface" value="com.foo.service.RentalService"/>
    <property name="cacheHome" value="true"/>
    <property name="lookupHomeOnStartup" value="true"/>
    <property name="resourceRef" value="true"/>
    <property name="homeInterface" value="com.foo.service.RentalService"/>
    <property name="refreshHomeOnConnectFailure" value="true"/>
</bean>

В следующем примере показано, как сконфигурировать ссылку на удаленный сессионный EJB-бин, не сохраняющий состояние, с использованием jee:

<jee:remote-slsb id="complexRemoteEjb"
        jndi-name="ejb/MyRemoteBean"
        business-interface="com.foo.service.RentalService"
        cache-home="true"
        lookup-home-on-startup="true"
        resource-ref="true"
        home-interface="com.foo.service.RentalService"
        refresh-home-on-connect-failure="true">

Схема jms

Элементы jms ответственны за конфигурирование бинов, связанных с JMS, таких как контейнеры слушателя сообщений из Spring. Подробную информацию об этой поддержке и самих элементах jms см. в этой главе.

С целью обеспечения полноты изложения: чтобы использовать элементы схемы tx, необходимо обеспечить наличие следующей преамбулы в верхней части конфигурационного XML-файла для Spring. В следующем фрагменте мы ссылаемся на корректную схему, чтобы элементы в пространстве имен context стали доступны:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jms="http://www.springframework.org/schema/jms"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/jms https://www.springframework.org/schema/jms/spring-jms.xsd">
    <!-- определения бинов здесь -->
</beans>

Использование <context:mbean-export/>

Этот элемент подробно рассмотрен в разделе о конфигурировании экспорта MBean на основе аннотаций.

Схема cache

Вы можете использовать элементы cache, чтобы активировать средства поддержки аннотаций @CacheEvict, @CachePut и @Caching в Spring. Схема также поддерживает декларативное кэширование на основе XML. Подробнее см. в разделах "Активируем аннотации кэширования" и "Декларативное кэширование на основе XML".

Чтобы использовать элементы схемы jdbc, необходимо обеспечить наличие следующей преамбулы в верхней части вашего конфигурационного XML-файла для Spring. В следующем фрагменте мы ссылаемся на корректную схему, чтобы элементы в пространстве имен context стали доступны:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/cache https://www.springframework.org/schema/cache/spring-cache.xsd">
    <!-- определения бинов здесь -->
</beans>