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版本,沒有任何更改。
在此先感謝
嗨。我只是看到了你的答案。我確實通過重新安裝新的TomEE +安裝來解決問題,然後使用開箱即用的解決方案:http://activemq.apache.org/tomee.html但是我也看到了您提到的答案。 – Stegger