DefaultJMSConnectionFactory和JmsXA之间的区别

时间:2016-10-10 16:32:08

标签: jms wildfly-10

开箱即用,Wildfly 10将池化连接工厂配置为具有两个条目的JMS子系统的一部分。

      <pooled-connection-factory name="activemq-ra"
                        transaction="xa"
                        connectors="in-vm"
                        entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory"/>

有人可能会像这样注入一个连接工厂:

@Resource(mappedName = "java:jboss/DefaultJMSConnectionFactory")
private ConnectionFactory connectionFactory;

这与选择其他条目有什么区别; java:/JmsXA

1 个答案:

答案 0 :(得分:0)

它没有区别它是一个额外的JNDI条目,以适应JMS 2规范默认ConnectionFactory名称:java:comp / DefaultJMSConnectionFactory

您应该使用此名称解决它。

  

从JMS 2.0开始,EE可以访问默认的JMS连接工厂   JNDI名称下的应用程序java:comp / DefaultJMSConnectionFactory。   WildFly消息传递子系统定义了一个池化连接工厂   用于提供此默认连接工厂。任何参数   这个集合连接工厂的变化将被考虑在内   任何在JNDI下查找默认JMS提供程序的EE应用程序   name java:comp / DefaultJMSConnectionFactory。

     

请参阅https://docs.jboss.org/author/display/WFLY9/Messaging+configuration

另一个只是遗留标识符:

  

JCA层拦截对createConnection()和createSession()的调用,并提供缓存层(以及其他内容)。因此,当您调用createConnection()或createSession()时,在大多数情况下,它并没有真正调用实际的JMS实现来实际创建新的JMS连接或JMS会话,它只是从它返回一个& #39;自己的内部缓存 - 换句话说,JCA层汇集了JMS连接和JMS会话。

     

在JBoss应用服务器中,&#34;特殊&#34;提供JCA缓存的JMS连接工厂通常可以在jndi的java:/ JmsXA中找到。

请参阅https://developer.jboss.org/wiki/ShouldICacheJMSConnectionsAndJMSSessions