[Seasar-user:16491] Intercepter内で発生元Pageクラスのメンバ変数を参照したい
浅野護
[E-MAIL ADDRESS DELETED]
2008年 12月 11日 (木) 18:11:38 JST
浅野と申します。
お世話になります。
PageクラスのdoXXXメソッドが呼ばれたときに、doXXXメソッドの前後でアクセスログを出力するIntercepterクラスを作成しています。
Pageクラスのinitialize()メソッドで、自クラスのメンバ変数に値をセットしておき、アクセスログ出力Intercepterでその値を出力しようとしたのですが、initialize()でセットした値が空のままになってしまいます。
サンプルコードの抜粋を以下に記述しますが、元々このようなことは出来ないのでしょうか?
-------(サンプルSTART)-------------------
public class AaaPage {
public String beginMessage = "";
public Class initialize() {
beginMessage = "begin message";
}
public Class doXXX() {
…
}
}
public class AccessLogIntercepter extends AbstractIntercepter {
public Object invoke(MethodInvocation invocation) throws Throwable {
Object obj = invocation.getThis();
if (obj instanceof AaaPage) {
String msg = ((AaaPage)obj).beginMessage; // ここで "begin
message" が取得出来ると期待したが、空文字列が取得される
System.out.println(msg);
}
Object ret = invocation.proceed();
return ret;
}
}
-------(サンプルEND)-------------------
環境は以下になります。
OS:WindowsXP
Seasar2:2.4.33
JDK:1.5
また上記のソースをHOT Deployで動かすと、Intercepterの「if(obj instanceof
AaaPage){」の行が、初めて通るときは「false」で判断されました。(2回目以降はtrue)
ただしCOOL Deployで動かすと、一回目もtrueになります。
よろしくお願いいたします。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20081211/48756945/attachment-0001.html>
Seasar-user メーリングリストの案内