Как говорит Джеймс Страчан - http://activemq.apache.org/ajax.html - это идеальное готовое решение для вашей проблемы.
Если вы все еще хотите создать такое решение вручную, вы можете просто создать JMS-соединение в своем Ajax-сервлете (соединение на запрос). По этой причине рассмотрите возможность использования шаблона Spring JMS (http://static.springsource.org/spring/docs/2.5.x/reference/jms.html). Затем просто получите сообщение в методе SerGlet doGet / doPost. Рассмотрим низкое значение тайм-аута для получения в этом случае. Такое решение будет работать для очередей и длительных тем.
Для недолговечных тем рассмотрим внешний прослушиватель сообщений. Spring MessageListenerContainer
является отличным инструментом для этой цели:
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer
<property name="connectionFactory" ref="jmsFactory"/>
<property name="destination" ref="myTopic" />
<property name="messageListener" ref="lastTenUpdatesCache" />
</bean>
Bean lastTenUpdatesCache
будет одноэлементным компонентом, реализующим MesssageListener
. Этот компонент будет отвечать за кэширование последних десяти сообщений (просто помещая его в список java.util). Он будет добавлен в ваш сервлет Ajax, поэтому в вашем методе doGet / doPost вы можете задать вопрос о последних 10 сообщениях, отправленных в тему.