DefaultJMSConnectionFactory和JmsXA之间的区别

DefaultJMSConnectionFactory和JmsXA之间的区别,jms,wildfly-10,Jms,Wildfly 10,Wildfly 10开箱即用,通过两个条目将池连接工厂配置为JMS子系统的一部分 <pooled-connection-factory name="activemq-ra" transaction="xa" connectors="in-vm" entries="java:/JmsXA java:jboss/DefaultJMSConn

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

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

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

没有区别,它是一个附加的JNDI条目,适合JMS 2规范默认值
ConnectionFactory
名称:java:comp/DefaultJMSConnectionFactory

您应该使用此名称解析它

自JMS 2.0以来,EE可以访问默认的JMS连接工厂 JNDI名称为java:comp/DefaultJMSConnectionFactory的应用程序。 WildFly消息传递子系统定义了一个池连接工厂 用于提供此默认连接工厂。任何参数 此池连接工厂的更改将被 在JNDI下查找默认JMS提供程序的任何EE应用程序 名称java:comp/DefaultJMSConnectionFactory

另一个只是一个遗留标识符:

JCA层拦截对createConnection()和createSession()的调用,并提供一个缓存层(除其他外)。因此,当您调用createConnection()或createSession()时,在大多数情况下,它并不是真正调用实际的JMS实现来实际创建一个新的JMS连接或JMS会话,而是从它自己的内部缓存中返回一个,换句话说,JCA层将JMS连接和JMS会话汇集在一起

在JBoss应用服务器中,提供JCA缓存的“特殊”JMS连接工厂通常在jndi的java:/JmsXA中可用

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