[Seasar-user:7186] Re: [Seasar]Session スコープのコンポーネントの破棄
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 4月 11日 (水) 17:00:40 JST
小林 (koichik) です.
Date: Wed, 11 Apr 2007 11:30:35 +0900
From: 原田 <[E-MAIL ADDRESS DELETED]>
To: seasar-ML <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:7171] [Seasar]Session スコープのコンポーネントの破棄
> Sessionスコープのコンポーネントを要らなくなった段階で破棄したいのですが、
> できるのですか?
RemoveSessionInterceptor を使うことができます.
Java5 であれば S2-Tiger の提供するアノテーションを
使用して,
public class Foo {
@RemoveSession("foo")
public void foo() {
...
}
}
とすることで,foo() メソッドが実行された後に
HttpSession から "foo" という名前の属性が削除
されます.
複数の属性をまとめて削除する場合は
@RemoveSession({"foo", "bar"})
のように名前を並べることができます.
J2SE1.4 では少し面倒で,dicon に
RemoveSessionInterceptor を登録する必要があります.
<component name="fooRemoveInterceptor"
class="org.seasar.framework.aop.interceptors.RemoveSessionInterceptor">
<property name="name">new String[] {"foo"}</property>
</componnet>
このインターセプタを任意のメソッドに適用することで,
そのメソッドが実行された後に HttpSession から
"foo" という名前の属性が削除されます.
インターセプタを適用するには dicon に直接書くか,
自動登録ならAspectAutoRegister,SMART deploy なら
AspectCustomizer で指定できるほか,
定数アノテーションで
public class Foo {
public static final String ASPECT = "value=fooRemoveInterceptor, pointcut=foo";
public void foo() {
...
}
}
のように指定することもできます.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内