[Seasar-user:7906] Re: [Seasar,Teeda]Session 破棄時のセッションDto参照で例外発

Yasuo Higa [E-MAIL ADDRESS DELETED]
2007年 5月 29日 (火) 20:13:47 JST


ひがです。

> 小林 (koichik) です.
> 
> 回避策としては,sessionDestroyed() メソッドの中で
> 外部コンテキストを設定するのが適当だと思いますが,
> 少々手間がかかります.
> 
> 後は sessionDestroyed() メソッドの中で外部コンテキストの
> 設定を行います.
> 
> public void sessionDestroyed(HttpSessionEvent se) {
>     S2Container container = SingletonS2ContainerFactory.getContainer();
>     ExternalContext externalContext = container.getExternalContext();
>     if (externalContext == null) {
>         throw new EmptyRuntimeException("externalContext");
>     }
>     externalContext.setRequest(new MyServletRequest(se.getSession()));
>     try {
>         //本来の処理
>     } finally {
>             externalContext.setRequest(null);
>     }
> }
> 
手動でDIする方法もあります。

public void sessionDestroyed(HttpSessionEvent se) {
    S2Container container = SingletonS2ContainerFactory.
getContainer();
    HogeService hogeService = (HogeService)
        container.getComponent(HogeService.class);
    HogeDto hogeDto = (HogeDto)
        container.getComponent(HogeDto.class);
    hogeService.setHogeDto(hogeDto);
    hogeService.someMethod();
}

--
Yasuo Higa
[E-MAIL ADDRESS DELETED]



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