2014-07-18 2 views
0

액티브 MQ/JMS를 사용하여 코어 자바에 메시지 리스너를 구현했습니다. 이 수신기의 목적은 ActiveMQ에서 주제를 구독 한 다음 주제에서받은 메시지를 청취하는 것입니다. 내 코드는 콘솔 응용 프로그램으로 잘 작동합니다. 이제 웹 응용 프로그램으로 응용 프로그램을 확장해야 수신 된 메시지를 웹 페이지, 즉 JSP에서 사용할 수 있습니다. JSP에서 메시지 수신기가 작동하는 방식, 활성 MQ 항목의 메시지를 받고 처리하는 방법에 대해 혼란스러워합니다. 지금까지 나는 코드를 다음했지만 현재 시나리오에 도움이하지 않는 것 :JSP에서 ActiveMQ 메시지 리스너 구현

<%! 
    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 
%> 

나는 내가 예를 들어 주제에 의해 수신되는 내 웹 페이지에서 모든 메시지를 인쇄 할 수 있도록이 코드를 사용하기로하고 방법 ?

답변

1

JSP 페이지는 HTML을 렌더링하기 위해 웹 페이지가로드되는 순간에 사용됩니다. 그 후에는 기능이 없습니다.

일반적으로 봄을 사용하여 Message Driven Bean (MDB) 또는 something similar을 만들어야합니다. MDB는 메시지를 수신하고 데이터를 처리하며 어딘가에 저장합니다 (일반적으로 데이터베이스이지만 글로벌 캐시이거나 로컬 파일 일 수도 있습니다). JSP는 JMS 메시지에 저장된 데이터를 사용합니다.

메시지를 사용자가보다 동적으로 상호 작용하게하려면 클라이언트 브라우저에서 JavaScript를 사용하여 ActiveMQ에 연결할 수 있습니다. ActiveMQ 배포본에는 이와 관련된 몇 가지 예가 있습니다. example/mqtt/websocket 또는 examples/stomp/websocket을 살펴보고 작동 코드를 확인하십시오.