[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 メーリングリストの案内