[Seasar-user:18978] S2JMSのMessageHandler実装クラスが複数スレッドから共有される
seasar
[E-MAIL ADDRESS DELETED]
2009年 12月 7日 (月) 18:34:43 JST
成田と申します。
s2jmsの挙動について質問させてください。
以下のようなメッセージをスレッド数2で受信した際、
・メッセージ1(ペイロードA)
・メッセージ2(ペイロードB)
JMSContainerImpl#invokeMessageListeners内で取得されるメッセージとペイロードの組み合わせが、
・メッセージ1(ペイロードB)
・メッセージ2(ペイロードB)
となってしまう場合があります。
ソースを確認したところ、
org.seasar.jms.core.message.MessageHandlerの実装クラスには
"PROTOTYPEで使用されることを想定しており、スレッドセーフではありません。"
とコメントされています。
実際はMessageHandlerFactoryのstatic変数にMessageHandlerインスタンス
が保持されており、複数スレッドから共有されてしまっています。
以上ご確認の程よろしくお願いします。
Seasar-user メーリングリストの案内