开箱即用,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
?
答案 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