[Seasar-user:19139] S2JMS コンテナ起動完了前にJMSContainerImpl#invokeMessageListenersが呼ばれる?

nari [E-MAIL ADDRESS DELETED]
2010年 1月 16日 (土) 20:38:16 JST


成田と申します。

S2JMS 1.0.1/ActiveMQ 5.3.0にて、S2JMSサーバ起動時以下の例外が発生する場合があります。

org.seasar.framework.container.ComponentNotFoundRuntimeException:
[ESSR0046]コンポーネント(hogeListener)が見つかりません
  at org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromGetComponentDef(S2ContainerBehavior.java:165)
  at org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromGetComponent(S2ContainerBehavior.java:158)
  at org.seasar.framework.container.impl.S2ContainerBehavior.acquireFromGetComponent(S2ContainerBehavior.java:62)
  at org.seasar.framework.container.impl.S2ContainerImpl.getComponent(S2ContainerImpl.java:124)
  at org.seasar.jms.container.impl.JMSContainerImpl.invokeMessageListeners(JMSContainerImpl.java:146)
  at org.seasar.jms.container.impl.JMSContainerImpl$FilterChainImpl.doFilter(JMSContainerImpl.java:211)

発生状況としては、queueに数件ほどメッセージが溜まっている状態でS2JMSサーバを起動した際に発生します。

コンテナ起動中、リソースアダプタが有効→受信スレッドが走りだす→コンテナが起動する前にQueueからメッセージを取得し、
リスナのComponent定義がまだ無い状態で、JMSContainerImplがリスナインスタンスを作成しようとしているのかな〜と想像しています。

以上よろしくお願いします。


Seasar-user メーリングリストの案内