私は自分のサーバーでSpring MVC Webアプリケーションを実行しています。最近、ログインしたユーザーに役割が変更されたことを通知する機能を追加して、ログアウトして再度ログインできるようにしたいと考えました。JMX/JMSを使用してWebアプリケーションのすべてのセッションにメッセージをブロードキャストしますか?
私はJMXを使用することを考えました。小さなテストを行いましたが、メッセージをブロードキャストしない以外は問題なく動作しました。例えば、私が2人のログインした人を持っている場合、1人しかメッセージを受信していません。
私の質問は、Webアプリケーションのすべてのインスタンス(アクティブセッション)にJMXを使用してメッセージをブロードキャストできるかどうかです。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="connectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<bean id="msgDestination"
class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="userToLogout.topic"/>
</bean>
<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="pubSubDomain" value="true"/>
<property name="receiveTimeout" value="10000"/>
</bean>
<bean id="userNotifier"
class="com.cap.messaging.UserNotifier">
<property name="destination" ref="msgDestination"/>
<property name="jmsTemplate" ref="jmsTemplate"/>
</bean>
<bean id="userNotificationListener"
class="com.cap.messaging.UserNotificationListener">
</bean>
<bean
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destinationName" value="userToLogout.topic" />
<property name="messageListener" ref="userNotificationListener" />
</bean>
今取り組んこのありえない: -
編集JMS
を使用してだから私は今、JMSをしようとしています、ここに私の設定ファイルです。しかし、私はActiveMQTueをActiveMQQueueに変更すると動作します。私はここで何が欠けているのですか?
誰かがこのソリューションに興味を持っている場合は、ApplicationスコープのBeanを追加して、パブリッシュ/サブスクライブ通信をシミュレートしました。ちょっとトリックをしました。 – Elio