[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 メーリングリストの案内