从 2.5 版开始,Spring 还提供了对基于 JCA 的容器的支持。尝试
从提供程序的类名自动确定类名。因此,通常可以提供
Spring 的通用 ,如以下示例所示:MessageListener
JmsMessageEndpointManager
ActivationSpec
ResourceAdapter
JmsActivationSpecConfig
<bean class="org.springframework.jms.listener.endpoint.JmsMessageEndpointManager">
<property name="resourceAdapter" ref="resourceAdapter"/>
<property name="activationSpecConfig">
<bean class="org.springframework.jms.listener.endpoint.JmsActivationSpecConfig">
<property name="destinationName" value="myQueue"/>
</bean>
</property>
<property name="messageListener" ref="myMessageListener"/>
</bean>
或者,您可以使用给定对象设置一个。该对象也可能来自 JNDI 查找
(使用 )。以下示例演示如何执行此操作:JmsMessageEndpointManager
ActivationSpec
ActivationSpec
<jee:jndi-lookup>
<bean class="org.springframework.jms.listener.endpoint.JmsMessageEndpointManager">
<property name="resourceAdapter" ref="resourceAdapter"/>
<property name="activationSpec">
<bean class="org.apache.activemq.ra.ActiveMQActivationSpec">
<property name="destination" value="myQueue"/>
<property name="destinationType" value="jakarta.jms.Queue"/>
</bean>
</property>
<property name="messageListener" ref="myMessageListener"/>
</bean>
使用 Spring 的 ,您可以在本地配置目标,如以下示例所示:ResourceAdapterFactoryBean
ResourceAdapter
<bean id="resourceAdapter" class="org.springframework.jca.support.ResourceAdapterFactoryBean">
<property name="resourceAdapter">
<bean class="org.apache.activemq.ra.ActiveMQResourceAdapter">
<property name="serverUrl" value="tcp://localhost:61616"/>
</bean>
</property>
<property name="workManager">
<bean class="org.springframework.jca.work.SimpleTaskWorkManager"/>
</property>
</bean>
指定的线程池还可以指向特定于环境的线程池,通常通过实例的属性。
考虑为所有实例定义共享线程池
如果您碰巧使用多个适配器。WorkManager
SimpleTaskWorkManager
asyncTaskExecutor
ResourceAdapter
在某些环境中,您可以改为从 JNDI 获取整个对象
(通过使用 )。然后,基于 Spring 的消息侦听器可以与
服务器托管的 ,它也使用服务器的内置 .ResourceAdapter
<jee:jndi-lookup>
ResourceAdapter
WorkManager
请参阅 JmsMessageEndpointManager
的 javadoc、JmsActivationSpecConfig
、
和 ResourceAdapterFactoryBean
了解更多详细信息。
Spring 还提供了一个不绑定到 JMS 的通用 JCA 消息端点管理器:.此组件允许
用于使用任何消息侦听器类型(例如 JMS)和任何
特定于提供程序的对象。请参阅您的 JCA 提供商的文档,以便
了解连接器的实际功能,并参阅 GenericMessageEndpointManager
javadoc 了解特定于 Spring 的配置详细信息。org.springframework.jca.endpoint.GenericMessageEndpointManager
MessageListener
ActivationSpec
基于 JCA 的消息端点管理与 EJB 2.1 消息驱动 Bean 非常相似。 它使用相同的基础资源提供程序协定。与 EJB 2.1 MDB 一样,您可以使用任何 在 Spring 上下文中,您的 JCA 提供程序也支持消息侦听器接口。 尽管如此,Spring 还是为 JMS 提供了明确的“便利”支持,因为 与 JCA 端点管理合同一起使用的最常见的端点 API。 |