JMS 从 EJB 获取 message/response

JMS Get message/response from EJB

这是我的发件人class:

private void sendJMSMessage(Object data) throws JMSException {
        Connection con = null;
        Session s = null;
        try {
            con = context.createConnection();
            s = con.createSession(false, Session.CLIENT_ACKNOWLEDGE);
            MessageProducer producer = s.createProducer(glassFishQueue);
            ObjectMessage msg = s.createObjectMessage();
            ArrayList list = new ArrayList();
            list.add("name");
            msg.setObject(p);
            producer.send(msg);
        }

还有我的消息驱动 Bean:

public void onMessage(Message message) {
    try {
        ObjectMessage om = (ObjectMessage) message;
        ArrayList al = (ArrayList) om.getObject();
        System.out.println("Msg: " + al.get(0));

    } catch (JMSException jex) {
        System.out.println("Exception: " + jex);
    }

我收到发件人 class 发送的消息,但我需要从 EJB 返回发件人的消息。 我正在做一个带有 table 的网络客户端,但我需要填写它从远程数据库获取信息,我真的不知道我应该用什么来做这件事,所以如果我做对了,请告诉我或告诉我任何建议

谢谢你

JMS 是异步的,所以它不能以开箱即用的请求-响应方式工作。

如果您想发送回复,一种方法是使用单独的队列。您的 MDB 可以将响应写入第二个队列,您的客户端可以通过创建 QueueReceiver.

来收听此队列

另一种方法是使用QueueRequestor。来自 javadocs:

It creates a TemporaryQueue for the responses and provides a request method that sends the request message and waits for its reply.

here and here 中查找 QueueRequestor 个示例。