[Seasar-user:8131] Re: S2ContainerとTeedaのバージョンを変更するとInterceptorにDIされません

亀田一郎 [E-MAIL ADDRESS DELETED]
2007年 6月 6日 (水) 22:42:45 JST


07/06/06 に TAKEUCHI Hideyuki <[E-MAIL ADDRESS DELETED]> さんは書きました:
>
> 竹内と申します。
> 最近同じようなところで躓いたので。
> Seasar2は使い始めて間もないので見当違いのことを
> 書いているかもしれませんのでご容赦ください。
>
> 環境1で動いているというのが少し疑問なのですが、
> InterceptorへのDIは、システムへのInterceptorの登録時に
> 行われ、HTTPリクエストの開始時にDIされるわけではないため
> 期待する動作はしないと思います。これはコンポーネントの
> ライフサイクルに関する問題なので、インスタンス管理を
> prototypeにしても解決はしないと思っています。
>
> LoginInterceptor2.invoke()の開始時に
> System.out.println(loginUserDto);
> として、インスタンスのIDを表示してみると
> たぶん別セッションからリクエストしても同じIDが
> 帰ってくるんじゃないかと思います(自分はそうでした)。
> もし、nullが帰ってきているようならDIが失敗していると
> 思われるのでdiconを見直す必要があると思います。
>
> 自分は今のところ、以下のようにinvoke()の頭で毎回コンテナから
> 取得しするという形で対応しています。
> LoginUserDto loginUserDto = (LoginUserDto) SingletonS2ContainerFactory
>    .getContainer().getComponent(LoginUserDto.class);


ご回答有難うございます。
早速、この方法を試してみました。
正常に動作しました。

もし、Seasar的にもっとスマートな方法があれば自分も知りたい
ところですのでご教授ください。

--
TAKEUCHI Hideyuki <[E-MAIL ADDRESS DELETED]>
chi-me-ra

亀田一郎 さんは書きました:
> 07/06/06 に Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> さんは書きました:
>>
>> 小林 (koichik) です.
>>
>> Date:    Wed, 6 Jun 2007 11:42:43 +0900
>> From:    "亀田一郎" <[E-MAIL ADDRESS DELETED]>
>> To:       [E-MAIL ADDRESS DELETED]
>> Subject: [Seasar-user:8099] Re:
>> S2ContainerとTeedaのバージョンを変更するとInterceptorにDIされません
>>
>> > > *** customizer.diconの内容は次の通りです。
>>>> >   <component name="loginInterceptor"
>> >              class="test.interceptor.LoginInterceptor" />
>>
>> instance="prototype" を追加してください.
>>
>> >   <component name="loginInterceptor2"
>> >              class="test.interceptor.LoginInterceptor2" />
>>
>> こちらにも instance="prototype" を追加してください.
>> # Interceptor も SMART deploy で自動登録にした方が
>> # いいと思いますが.その場合はデフォルトで prototype です.
>>
>> >   <component name="testCustomizer2"
>> >              class="
>> > org.seasar.framework.container.customizer.AspectCustomizer">
>> >      <initMethod name="addInterceptorName">
>> >        <arg>"loginInterceptor2"</arg>
>> >      </initMethod>
>> >      <property name="pointcut">"doAuth"</property>
>> >   </component>
>>
>>     <property name="useLookupAdapter">true</property>
>> を追加してください.
>
> お手数をお掛けしております。
> ご指定の内容でcustomizer.diconを変更して、テストを行いました。
>
> 下記の通り、インターセプターはerror画面に遷移し、
> 正常に動作しておりません。
>
> DEBUG 2007-06-06 16:53:28,086 [http-8080-Processor25] クラス(
> test.web.logincheck
> 2.Logincheck2Page[logincheck2_logincheck2Page])のコンポーネント定義を登
> 録します
> DEBUG 2007-06-06 16:53:28,136 [http-8080-Processor25] BEGIN
> test.web.logincheck2
> .Logincheck2Page#doAuth()
> LoginInterceptor2...起動
> DEBUG 2007-06-06 16:53:28,136 [http-8080-Processor25] END
> test.web.logincheck2.L
> ogincheck2Page#doAuth() : error
>
>
> --
>> <signature>
>>   <name>Koichi Kobayashi</name>
>>   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
>> </signature>
>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-user/attachments/20070606/03fbee52/attachment.html 


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