Spring的DefaultMessageListenerContainer直接从代理或JCA托管使用连接工厂?

时间:2015-03-04 00:07:01

标签: jms spring-integration spring-jms jca

我有一个Spring Integration应用程序,我有一个JMS入站通道适配器,它将从远程JMS代理中的队列接收消息。我直接从代理的远程JNDI服务查找连接工厂,这就是我用来设置入站通道适配器的方法。我知道幕后有一个DefaultMessageListenerContainer。根据{{​​1}} javadocs,找到here,如果" sessionTransacted"设置为" true"对于DMLC,本地JMS事务将用于从代理传递消息。

我对收到消息是外部管理交易的一部分不感兴趣。

现在,如果JMS代理提供资源适配器,因此在JBoss App服务器中配置了JCA托管连接工厂(可能能够参与JTA事务),我的Spring Integration在战争中运行。如上所述,我可以使用它而不是直接从代理的JNDI中查找。由于我对全球交易不感兴趣,我不知道使用这个JCA连接工厂的价值,而且我不知道JCA所做的连接/会话的缓存是否可能与DMLC缓存策略冲突。另外,我不确定添加JCA层来包装原始连接工厂是否会影响性能。

这是正确的方法,直接从代理JNDI获取连接工厂,让DMLC处理所有内容或采用JCA托管连接?似乎有一个没有很好记录的学派认为JCA更安全,更强大,但如果我不使用EJB,我就不会看到这是真的。

0 个答案:

没有答案