2013-02-02 24 views
0

我正在測試TomEE +,因爲它在新系統中包含了很多我需要的功能。 Apache ActiveMQ就是其中之一。但是讓JMS工作起來有些困難,而我尋找解決方案的努力沒有取得任何結果。我甚至試圖谷歌的答案!JMS Connectionfactory在TomEE + 1.5.1中給出NullPointerException異常Servlet

即使當我嘗試了「亂用」的例子:

import javax.annotation.Resource; 
import javax.servlet.http.HttpServlet; 
import javax.jms.Topic; 
import javax.jms.Queue; 
import javax.jms.ConnectionFactory; 

public class MyServet extends HttpServlet { 

    @Resource(name = "foo") 
    private Topic fooTopic; 

    @Resource(name = "bar") 
    private Queue barQueue; 

    @Resource 
    private ConnectionFactory connectionFactory; 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     //... 

     Connection connection = connectionFactory.createConnection(); 
     connection.start(); 

     // Create a Session 
     Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 

     // Create a MessageProducer from the Session to the Topic or Queue 
     MessageProducer producer = session.createProducer(fooTopic); 
     producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); 

     // Create a message 
     TextMessage message = session.createTextMessage("Hello World!"); 

     // Tell the producer to send the message 
     producer.send(message); 

     //... 
    } 

} 

我得到同樣的問題,我的ConnectionFactory爲空。當我調試時,我可以看到,所有我的@Resource註釋成員都是這種情況。我認爲,如果正確註釋,我的成員可以通過注射進行實驗。

我試圖把它添加到我的tomee.xml,沒有結果:

<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter"> 
    BrokerXmlConfig = broker:(tcp://localhost:61616) 
    ServerUrl  = tcp://localhost:61616 
</Resource> 

<Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory"> 
    ResourceAdapter = MyJmsResourceAdapter 
</Resource> 

<Container id="MyJmsMdbContainer" ctype="MESSAGE"> 
    ResourceAdapter = MyJmsResourceAdapter 
</Container> 

<Resource id="bar" type="javax.jms.Queue"/> 
<Resource id="foo" type="javax.jms.Topic"/> 

不過我得到一個NullPointerException當我運行的例子。任何關於我可能錯過什麼的建議。除了tomee.xml之外,我運行的是TomEE +的1.5.1版本,沒有任何更改。

在此先感謝

回答

0

將連接工廠資源代碼更改爲以下。它應該工作

@Resource(name = "MyJMSConnectionFactory", type = ConnectionFactory.class) 
private ConnectionFactory connectionFactory; 
+0

嗨。我只是看到了你的答案。我確實通過重新安裝新的TomEE +安裝來解決問題,然後使用開箱即用的解決方案:http://activemq.apache.org/tomee.html但是我也看到了您提到的答案。 – Stegger

相關問題