【问题标题】:JMS Get message/response from EJBJMS 从 EJB 获取消息/响应
【发布时间】:2015-10-01 07:54:36
【问题描述】:

这是我的发送者类:

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);
    }

我收到了从发件人类发送的消息,但我需要从 EJB 将消息返回给发件人。 我正在做一个带有表格的网络客户端,但我需要从远程数据库中获取信息来填充它,我真的不知道我应该使用什么来执行此操作,所以如果我做得对,请告诉我或告诉我任何建议

谢谢你

【问题讨论】:

  • 你的 EJB 是否实现了javax.jms.MessageListener
  • 是的,我在哪里覆盖 onMessage()

标签: java ejb jms


【解决方案1】:

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

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

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

它为响应创建一个 TemporaryQueue 并提供一个请求 发送请求消息并等待其回复的方法。

查看herehere 以获取QueueRequestor 示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 2011-05-04
    • 1970-01-01
    • 2012-08-09
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多