Jakarta ee 如何实现JMS MessageListener?

Jakarta ee 如何实现JMS MessageListener?,jakarta-ee,jms,message-queue,Jakarta Ee,Jms,Message Queue,我试图实现MessageListener,但它不起作用,但当我使用MessageListner时,它不起作用。那么,当MessageListener开始工作时,我应该做什么呢?我正在使用JBoss4.02 recv.receive(); // This works recv.setMessageListener(new ExListener()); // This doesn't work public static class ExListener implements

我试图实现MessageListener,但它不起作用,但当我使用MessageListner时,它不起作用。那么,当MessageListener开始工作时,我应该做什么呢?我正在使用JBoss4.02

recv.receive(); // This works

recv.setMessageListener(new ExListener()); // This doesn't work

    public static class ExListener 
    implements MessageListener
    {
        public void onMessage(Message msg)
        {
            TextMessage tm = (TextMessage) msg;
            try {
                System.out.println("onMessage, recv text="+tm.getText());
            } catch(Throwable t) {
                t.printStackTrace();
            }
        }
    }

问题可能是注册监听器的类已经结束,监听器对象也不存在了。您应该保持对象处于活动状态并运行以接收消息。

问题可能是注册侦听器的类已结束,并且侦听器对象已不存在。您应该让对象保持活动状态并运行以接收消息。

这可以通过使用消息驱动bean在Jboss服务器上实现,这可能是最好的方法,当然,更轻量级的选项是通过实现MessageListener在Spring中创建JMSlister这可以在Jboss上实现通过使用消息驱动bean,这可能是最好的方法,当然,更轻量级的选项是通过实现MessageListener在Spring中创建jmsListener,您记得调用connection.start吗?我猜您一定已经有了接收方法,但可能是在更改代码时意外删除了它。

您记得调用connection.start吗?我想您一定已经有了接收方法才能工作,但可能您在更改代码时意外删除了它。

请提供有关它不工作的含义的信息。在第一个示例中,我收到消息,我可以对其进行sysout,但在第二个示例中,我没有收到消息,因为SysOutput没有打印,所以请提供有关它不起作用意味着什么的信息。在第一个示例中,我获取消息,并且可以将其系统输出,但在第二个示例中,我没有获取消息,因为sysout没有打印