0

新しいシステムに必要な多くの機能をラップしているので、TomEE+ をテストしています。Apache ActiveMQ はその 1 つです。しかし、私は JMS を機能させるのにいくつかの困難を抱えており、解決策を見つけようとしても何の成果も得られませんでした。グーグルで答えを探してみました!

「すぐに使える」例を試しても:

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 は null です。デバッグすると、 @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 バージョンを何も変更せずに実行しています。

前もって感謝します

4

1 に答える 1