문제

내가 건축하는 사이트를 사용한 간단한 AJAX 블릿을 이야기 JMS(ActiveMQ)고 메시지가 도착했을 때부터 화제를 업데이트 사이트입니다.

I have Javascript 을 만드는 XMLHttpRequest 를 위한 데이터이다.Servlet 프로세스를 Get 요청을 보낸 다시 JSON.그러나 나는 아이디어가 어떻게 연결하는 내 Servlet 내 ActiveMQ 메시지 브로커입니다.그것은 그냥 보내는 더미 데이터를 바로 지금이다.

내 생각 Servelt 를 구현해야 합니다 messagelistener.다음 onMessage 데이터를 보낼 JavaScript 페이지입니다.하지만 난 모르겠어요 이렇게 하는 방법.

도움이 되었습니까?

해결책

의 문제는 servlet 구현 MessageListener 는 servlet 는 동기 및 MessageListeners 는 비동기입니다.신을 만들어야 합니다 몇 가지 다른 객체를 행동으로 MessageListener 업데이트 및 일부 국가 어딘가(가능하게 데이터베이스 또는 JMX MBean 나 세션 상태이 EJB)메시지가 왔습니다.그런 다음 서비스를 쿼리할 수 있는 상태가 있는지 확인하기 위해 데이터를 보고서에 다시 클라이언트와 웹 페이지할 수 있는 주기적으로 ping 서블릿 요청하는 신선한 데이터이다.

다른 팁

제임스 Strachan 말한다- http://activemq.apache.org/ajax.html 는 최상의 솔루션에 대한 문제입니다.

는 경우 당신은 여전히 만들려는 이러한 솔루션을 수동으로 너를 만들 수 있습 JMS 연결 Ajax servlet(연결 요청당).을 고려하여 봄 JMS 템플릿 그 이유에 대한( http://static.springsource.org/spring/docs/2.5.x/reference/jms.html ).그냥 받는 메시지에서 Servlet doGet/doPost 방법입니다.고려한 저렴한 제한 시간 값을 받는 경우입니다.이러한 솔루션이 큐하고 튼튼한 주제입니다.

비 튼튼한 주제를 고려해 외부의 메시지 수신기.봄 MessageListenerContainer 는 우수한 도구를 그 목적을 위해:

<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer
   <property name="connectionFactory" ref="jmsFactory"/>
   <property name="destination" ref="myTopic" />
   <property name="messageListener" ref="lastTenUpdatesCache" />
</bean>

lastTenUpdatesCache 이 될 수 있는 단일 구현 콩 MesssageListener.이 빈 것을 책임지는 캐싱을 위한 마지막 메시지(다만으로 퍼팅 java.util 목록).그것은 것으로 주입된 Ajax 블릿에서 그래서 당신의 doGet/doPost 방법을 요청할 수 있습니다 그것은 지난 10 게 보내는 메시지는 주제입니다.

을 시도했다 읽기에 대한 답변 이 질문 는 링크 ActiveMQ Ajax 지원.기본적으로 ActiveMQ 지원을 위한 Ajax 를 사용할 수 있도록 당신은 그것의 자바스크립트 라이브러리를 직접 구독에서 ActiveMQ 주제입니다.

ActiveMQ 웹 samples 는 방법을 보여하는 것과 같은 실시간 채팅 또는 실시간 주가 포트폴리오 화면 Ajax 를 사용하여 가 ActiveMQ

당신은 아마를 얻을 필요가 JMS 연결에서 JNDI 은 다음과 같습니다.

Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
    "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
props.setProperty(Context.PROVIDER_URL,
    "tcp://hostname:61616");
javax.naming.Context ctx = new InitialContext(props);
// lookup the connection factory
javax.jms.TopicConnectionFactory factory = 
    (javax.jms.TopicConnectionFactory)ctx.lookup("ConnectionFactory");
// create a new TopicConnection for pub/sub messaging
javax.jms.TopicConnection conn = factory.getTopicConnection();
// lookup an existing topic
javax.jms.Topic mytopic = (javax.jms.Topic)ctx.lookup("MyTopic");
// create a new TopicSession for the client
javax.jms.TopicSession session = 
    conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);
// create a new subscriber to receive messages
javax.jms.TopicSubscriber subscriber = session.createSubscriber(mytopic);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top