[Seasar-user:18981] Re: S2JMSのMessageHandler実装クラスが複数スレッドから共有される
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 12月 7日 (月) 21:30:27 JST
小林 (koichik) です.
Date: Mon, 7 Dec 2009 18:34:43 +0900
From: seasar <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18978] S2JMSのMessageHandler実装クラスが複数スレッドから共有される
> 以下のようなメッセージをスレッド数2で受信した際、
> ・メッセージ1(ペイロードA)
> ・メッセージ2(ペイロードB)
>
> JMSContainerImpl#invokeMessageListeners内で取得されるメッセージとペイロードの組み合わせが、
> ・メッセージ1(ペイロードB)
> ・メッセージ2(ペイロードB)
> となってしまう場合があります。
>
> ソースを確認したところ、
> org.seasar.jms.core.message.MessageHandlerの実装クラスには
> "PROTOTYPEで使用されることを想定しており、スレッドセーフではありません。"
> とコメントされています。
> 実際はMessageHandlerFactoryのstatic変数にMessageHandlerインスタンス
> が保持されており、複数スレッドから共有されてしまっています。
報告ありがとうございます.
修正して SNAPSHOT をデプロイしたのでご確認ください.
http://maven.seasar.org/maven2-snapshot/org/seasar/jms/s2jms-core/1.0.1-SNAPSHOT/s2jms-core-1.0.1-20091207.121331-1.jar
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内