-
Type: Bug
-
Resolution: Fixed
-
Priority: Critical
-
Affects Version/s: 1.2
-
None
[Seasar-users:14329] より
うえしんさんご指摘ありがとうございます。
こんにちは。 うえしんです。 以前よく使わせていただいていて、ここしばらくは離れていたのですが、 久しぶりに更新されたということで試してみました。 やっぱりツールにコンポーネントがインジェクトされるのは便利です。 さて、早速で申し訳ありませんが、 (おそらく)applicationスコープ以外でtoolbox.xmlに登録されているツールで org.seasar.framework.container.TooManyRegistrationRuntimeException を発生する場合があることを確認しました。 具体的には AutoRegisteringS2ServletToolInfo.javaの60行目(ツールのコンテナへの登録) が複数回呼ばれる可能性があります。 (webapp起動直後にほぼ同時に複数のリクエストがあった場合など) これにより、同名のコンテポーネントが複数回登録され、 TooManyRegistrationRuntimeExceptionを発生させることになります。 (Eclipseなどで50行目~60行目あたりでサスペンドさせると再現できます。) 回避策としましては、 60行目のregister前後をsynchronizedなどでブロックさせ、 再度 container.hasComponentDef で登録確認を行うなどが考えられると思います。 ご確認、よろしくお願いします。
手順:
再現確認後、指摘行あたりを修正。
雰囲気としては synchronizedなんじゃないかなあ、という思い。