[seasar-dotnet:424] Re: S2AOP.NET でinstance=sessionのコンポーネントでAOPが効かない
Kazuya Sugimoto
sugimotokazuya @ gmail.com
2006年 12月 16日 (土) 14:20:23 JST
杉本です。
くろいわさん、ありがとうございます。
ご指摘の通りです。
あと、もう1個問題がありましたので、くろいわさんの修正に少し追加しました。
よろしくお願いします。
object component = session[componentName];
if (component != null)
{
return component;
}
component = this.ConstructorAssembler.Assemble();
object proxy = GetProxy(receiveType);
if (proxy == null)
{
session[componentName] = component;
}
else
{
session[componentName] = proxy;
}
this.PropertyAssembler.Assemble(component);
this.InitMethodAssembler.Assemble(component);
if (proxy == null)
{
return component;
}
else
{
return proxy;
}
06/12/15 に tomoaki.kuroiwa さんは書きました:
>
> 皆様
>
> 大変お世話になっております。
> 戴いたソースでビルドし試してみました。
> 結果としては、シンプルなWebアプリケーションでは問題なくプロキシオブジェクト
> を取得することができましたが、
> 本番のアプリケーションでは、StackOverflowエラーが発生してしまい起動すること
> ができませんでした。。。
>
>
> そこで、教えていただいた内容を参考に以下のよう修正したところ
> StackOverflowエラーは発生しなくなり、かつプロキシオブジェクトを取得すること
> ができるようになりました。
>
> {
> object component = session[componentName];
> if (component != null){
> return component;
> }
> {
> //ないので作る
> component = this.ConstructorAssembler.Assemble();
> session[componentName] = component; //ここがミソか?
> this.PropertyAssembler.Assemble(component);
> this.InitMethodAssembler.Assemble(component);
> }
> {
> //プロキシを取得してみる
> object proxy = GetProxy(receiveType);
> if (proxy == null){
> session[componentName] = component;
> return component;
> }else{
> session[componentName] = proxy;
> return proxy;
> }
> }
> }
>
>
> この修正は妥当なのでしょうか。。。いまいち自信がありません。
>
> まずはご報告まで。
> 失礼します。
>
> くろいわ
--
Kazuya Sugimoto
http://d.hatena.ne.jp/sugimotokazuya/
seasar-dotnet メーリングリストの案内