[seasar-dotnet:418] S2AOP.NET でinstance=sessionのコンポーネントでAOPが効かない
tomoaki.kuroiwa @ informatix.co.jp
tomoaki.kuroiwa @ informatix.co.jp
2006年 12月 14日 (木) 13:12:24 JST
はじめまして、くろいわと申します。
いつも大変お世話になっております。
S2AOP.NETをASP.NETにて使用しています。S2AOP.NETについて質問です。
App.diconで定義したinstance=sessionと設定したコンポーネントを、aspx.csの
Page_Load()上で取得しています。
このコンポーネントですが、1回目取得したときはAOPのプロキシオブジェクトが
返ってくるようなのですが、
2回目以降は実体のオブジェクトの方が返って来てしまいます。なのでAOPが効きま
せん。
(ブラウザの再読込みボタンで確認しました。セッションは維持できています。)
AOPでロギングしているため、毎回プロキシオブジェクトの方を取得する必要があり
困っています。
どうすれば解決できるのかアドバイス頂けませんでしょうか。
■App.dicon
<?xml version="1.0" encoding="utf-8" ?>
<components>
<component name="echo" class="Hello" instance="session">
<property name="Session">session</property>
<aspect pointcut=".*">measurement</aspect>
</component>
<component name="measurement" class="MeasurementInterceptor" />
</components>
■aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
IHello hello =
(IHello)SingletonS2ContainerFactory.Container.GetComponent(typeof(IHello),
"echo");
string msg = string.Empty;
if(hello is Hello) //1回目はfalseになる。2回目以降はtrueになる
{
msg = "プロキシじゃないです";
}
else
{
msg = "プロキシです";
}
Label1.Text = hello.Echo("こんにちは") + " " + msg;
}
現在の環境は以下の通りです。
VB2005、ASP.NET2.0(C#)、S2Container.NET 1.2.7
S2AOP.NETは標準実装を利用しています。
カットオーバー間際に、はまっております。
どうぞ、よろしくお願いいたします。
くろいわ
seasar-dotnet メーリングリストの案内