2013-10-28 36 views
1

我試圖在WebLogic 10.3.5上創建一個MDB(EJB 3.0)。在外部AMQ服務器上收聽隊列。經過許多工作和教程的組合,我在webLogic上部署時遇到以下錯誤。將WebLogic MDB配置爲偵聽外部AMQ服務器

[EJB:015027]消息驅動的EJB是事務性的,但JNDI名稱引用了JMS連接工廠:ActiveMQXAConnectionFactory不是JMS XA連接工廠。

這裏是工作的簡要我做:

我已經加入到我的WLS類路徑相應的庫(以下這個tuturial http://amadei.com.br/blog/index.php/connecting-weblogic-and-activemq),我創建了相應的JMS模塊,在本教程中指出。我最初使用ActiveMQConnectionFactory和ActiveMQXAConnectionFactory後,我也忽略了jms。記法只是簡單地將名稱命名爲testQueue。

然後用下面的結構創建一個簡單的MDB。 我明確定義了「connectionFactoryJndiName」屬性,因爲否則它會假定未找到WebLogic連接工廠,然後引發錯誤。

@MessageDriven(
     activationConfig = { 
       @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
       @ActivationConfigProperty(propertyName = "destination", propertyValue = "testQueue"), 
       @ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "ActiveMQXAConnectionFactory") 
     }, 
     mappedName = "testQueue") 
public class ROMELReceiver implements MessageListener { 

    /** 
    * Default constructor. 
    */ 
    public ROMELReceiver() { 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see MessageListener#onMessage(Message) 
    */ 
    public void onMessage(Message message) { 
     System.out.println("Message received"); 
    } 

} 

在這一點上,我堅持上面提到的錯誤。儘管我使用ActiveMQXAConnectionFactory而不是簡單的ActiveMQConnectionFactory,但Web邏輯服務器中的JNDI資源樹顯示org.apache.activemq.ActiveMQConnectionFactory作爲我配置的連接工廠的類。

我錯過了什麼?或者這是連接WebLogic與AMQ的完全錯誤的方式?

在此先感謝。

+0

您使用的是什麼版本的ActiveMQ? –

+0

我正在使用ActiveMQ 5.8 –

回答

0

我知道它的晚了,但最近我不得不做同樣的事情,並得到同樣的錯誤。 這篇文章幫我:

https://community.oracle.com/thread/3903705

基本上它說,在JNDI屬性上在WebLogic模塊上的國外服務器選項添加新的參數。

xa = true。

因爲activemq默認情況下不使用Xa連接。