2016-10-10 50 views
3

Wildfly 10將混合連接工廠配置爲具有兩個條目的JMS子系統的一部分。DefaultJMSConnectionFactory和JmsXA之間的區別

 <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

沒有區別它是一個其它附加JNDI條目,以滿足JMS規範2默認ConnectionFactory名稱:JAVA:COMP/DefaultJMSConnectionFactory

你應該使用這個名字解決。

因爲JMS 2.0,默認JMS連接工廠是訪問EE JNDI名稱下的Java應用程序 :COMP/DefaultJMSConnectionFactory。 WildFly消息子系統定義了一個池連接工廠, 用於提供此默認連接工廠。任何參數 在此池連接工廠上的更改都將被 考慮在任何EE應用程序中,這些應用程序在JNDI 名稱java:comp/DefaultJMSConnectionFactory下尋找默認JMS提供程序。

參見https://docs.jboss.org/author/display/WFLY9/Messaging+configuration

另一種是僅有一個遺留標識符:

的JCA層攔截到的createConnection()和了createSession(呼叫),並提供一個緩存層(除其他事項外)。因此,當你調用createConnection()或createSession()時,在大多數情況下,它並不真正調用實際的JMS實現來實際創建新的JMS連接或JMS會話,而只是從它自己的內部緩存中返回一個 - 換句話說, JCA層池JMS連接和JMS會話。

在JBoss應用程序服務器中,提供JCA緩存的「特殊」JMS連接工廠通常在jndi的java:/ JmsXA中可用。

請參閱https://developer.jboss.org/wiki/ShouldICacheJMSConnectionsAndJMSSessions

相關問題