Java 在/使用JSP实现ActiveMQ消息侦听器

Java 在/使用JSP实现ActiveMQ消息侦听器,java,jsp,jms,activemq,message-listener,Java,Jsp,Jms,Activemq,Message Listener,我已经使用activemq/JMS在核心java中实现了消息侦听器。此侦听器的目的是订阅ActiveMQ上的主题,然后侦听从该主题接收的消息。我的代码作为控制台应用程序运行良好。现在,我需要将我的应用程序扩展到一个web应用程序中,以便接收到的消息可以在web页面(即JSP)中使用。我对消息侦听器在JSP中如何工作、如何接收和处理来自活动MQ主题的消息感到困惑。到目前为止,我有以下代码,但在当前场景中似乎没有帮助: <%! public void handleReceivedMes

我已经使用activemq/JMS在核心java中实现了消息侦听器。此侦听器的目的是订阅ActiveMQ上的主题,然后侦听从该主题接收的消息。我的代码作为控制台应用程序运行良好。现在,我需要将我的应用程序扩展到一个web应用程序中,以便接收到的消息可以在web页面(即JSP)中使用。我对消息侦听器在JSP中如何工作、如何接收和处理来自活动MQ主题的消息感到困惑。到目前为止,我有以下代码,但在当前场景中似乎没有帮助:

<%!
    public void handleReceivedMessages() {
        String url = ActiveMQConnection.DEFAULT_BROKER_URL;
        String subject = "XXXXX";

        try {
            ConnectionFactory connectionFactory
                    = new ActiveMQConnectionFactory(url);
            Connection connection = connectionFactory.createConnection();
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Topic topic = session.createTopic(subject);
            MessageConsumer consumer = session.createConsumer(topic);

            MessageListener listner = new MessageListener() {
                @Override
                public void onMessage(Message message) {
                    try {
                        if (message instanceof TextMessage) {
                            TextMessage textMessage = (TextMessage) message;
                            System.out.println("Received message : "
                                    + textMessage.getText() + "'");
                        }
                    } catch (JMSException e) {
                        System.out.println("Caught:" + e);
                    }
                }
            };
            consumer.setMessageListener(listner);
            try {
                System.in.read();
            } catch (IOException e) {
            }
            connection.close();
        } catch (JMSException ex) {
            // Logger.getLogger(Consumer.class.getName()).log(Level.SEVERE, null, ex);

        }
    }//end method
%>


如何使用此代码,例如打印主题收到的网页上的每一条消息?

JSP页面在网页加载时用于呈现HTML。之后,它们就没有功能了

通常,您需要创建(MDB)或使用Spring。MDB将接收消息、处理数据并将其存储在某个位置(通常是数据库,但也可以是全局缓存、本地文件或类似文件)。然后,JSP只使用JMS消息存储的数据

如果您真的希望消息更动态地与用户交互,那么您可以从客户端浏览器使用JavaScript连接到ActiveMQ。ActiveMQ发行版中有一些与此相关的示例。查看examples/mqtt/websocket或examples/stomp/websocket以查看一些工作代码