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