[Seasar-user:21298] Re: インスタンスのSCOPEに関して

鈴木 順 [E-MAIL ADDRESS DELETED]
2012年 3月 25日 (日) 15:02:52 JST


小林さん


お世話になっております。鈴木です。



> Singleton
>   Prototype
>     Request(★今回キャッシュの機構をいれたいObject)
> と言う風になっている場合に
> 自分でデバッグしてみた感じですと、
> > そのSingletonのものが使われるたびに、
> > XXXLogicはsetしなおされるもののでしょうか?

今考えると、問題にテンパってしまい、
すごいアホな事聞いてしまって申し訳ないです。
Singletonなヤツの、
プロパティをリクエストごとに書き換えるなんてありえないですね。

> 自動でrequestをセットする以外に、
> 今のリクエストのHttpServletRequestを取得する方法などありませんでしょうか?
> S2Containerにアクセスする形式などでもかまいません。

こちらも
return (HttpServletRequest) SingletonS2ContainerFactory.getContainer().getComponent(HttpServletRequest.class);
でいけたと思われますので、当件解決で問題ありません。

なにか、問題などありましたら、お知らせ下さい。

以上



On Sat, 24 Mar 2012 23:46:59 +0900
鈴木 順 <[E-MAIL ADDRESS DELETED]> wrote:

> 
> 小林さん
> 
> お世話になっております。鈴木です。
> 
> Singleton
>   Prototype
>     Request(★今回キャッシュの機構をいれたいObject)
> と言う風になっている場合に
> 自分でデバッグしてみた感じですと、
> > そのSingletonのものが使われるたびに、
> > XXXLogicはsetしなおされるもののでしょうか?
> 
> しなおされないようです。
> 
> > requestと言うプロパティを定義しておくと、自動的に
> > requestがセットされると思うのですが、
> > このrequest自体は、毎回その時のRequestがセットされるでしょうか?
> 
> こちらもダメでした。
> 
> 自動でrequestをセットする以外に、
> 今のリクエストのHttpServletRequestを取得する方法などありませんでしょうか?
> S2Containerにアクセスする形式などでもかまいません。
> 
> 以上 宜しくお願いします
> 
> On Sat, 24 Mar 2012 19:39:28 +0900
> 鈴木 順 <[E-MAIL ADDRESS DELETED]> wrote:
> 
> > 
> > 小林さん
> > 
> > お世話になっております。鈴木です。
> > 
> > 調査をしてみて、分かった点がありますので、以下ご教授下さい。
> > そのRequestでnewされたものが使われる場合と、使われない場合で、
> > 呼んでいるルートが違いました、
> > 
> > > 問題のObjectはinstance="request"でapp.diconに定義されいる。(定数アノテーションは削除)
> > 
> > の問題のObjectは処理としてはすごい末端でして、
> > XXXLogicからしか呼ばれないのですが、
> > XXXLogicはいたるところから呼ばれます。
> > XXXLogic自体は、LogicなのでProtoTypeだと思うんですけど、
> > XXXLogicを読んでいるもの自身が例えばSingletonだったりする場合に、
> > そのSingletonのものが使われるたびに、
> > XXXLogicはsetしなおされるもののでしょうか?
> > 
> > 私は単純に、instance="request"としておけば、
> > リクエスト毎にnewされ、そのリクエスト内で
> > 様々な呼び出しルートで呼ばれても、画一のものになると
> > 考えてしまっているのですが、この部分の正しい仕様をご教授下さい。
> > 
> > 仮に上記が私の誤りであった際には、以下の点もご教授下さい。
> > requestと言うプロパティを定義しておくと、自動的に
> > requestがセットされると思うのですが、
> > このrequest自体は、毎回その時のRequestがセットされるでしょうか?
> > 
> > 以上 申し訳ありませんが、ご教授下さい。
> > 
> > 
> > 
> > 
> > On Thu, 22 Mar 2012 16:22:35 +0900
> > 鈴木 順 <[E-MAIL ADDRESS DELETED]> wrote:
> > 
> > > 
> > > 小林さん
> > > 
> > > お世話になっております。鈴木です。
> > > 
> > > > 定数アノテーションを削除し、app.diconのみの記述とし、実行してみます。
> > > 
> > > 事象の方は、改善されませんでした。
> > > 
> > > 現状整理すると、
> > > 問題のObjectはinstance="request"でapp.diconに定義されいる。(定数アノテーションは削除)
> > > 問題のObjectを利用するObjectはSMART_DEPLOYでS2に登録される、XXXXLogic
> > > 問題のObjectのコンストラクタにログを仕込んだ所、S2init時と、リクエスト発生時に呼ばれている
> > > 問題のObjectの実処理にログを仕込んでHashCodeを出力した所、3回に1度程度、S2init時に生成されている物が使われている
> > > 
> > > と言う事になります。
> > > 
> > > 申し訳ありませんが、調査にご協力の程宜しくお願いいたします。
> > > 
> > > 以上
> > > 
> > > 
> > > On Thu, 22 Mar 2012 14:53:50 +0900
> > > 鈴木 順 <[E-MAIL ADDRESS DELETED]> wrote:
> > > 
> > > > 
> > > > 小林さん
> > > > 
> > > > お世話になっております。鈴木です。
> > > > 
> > > > > 定数アノテーションを記述したコンポーネントは SMART deploy で
> > > > > 自動登録されるコンポーネントですか?
> > > > > それとも dicon に明示的に記述していますか?
> > > > > 
> > > > > もし後者なら,dicon で instance="request" を明記すると
> > > > > どうなりますか?
> > > > 
> > > > app.dicon に明示的に記述しております。
> > > > また、今確認したら、定数アノテーションでも指定してあるのですが、
> > > > app.dicon で instance="request" が明記されている状態でした。
> > > > 
> > > > 定数アノテーションを削除し、app.diconのみの記述とし、実行してみます。
> > > > 
> > > > 
> > > > On Thu, 22 Mar 2012 02:00:22 +0900
> > > > Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:
> > > > 
> > > > > 小林 (koichik) です.
> > > > > 
> > > > > 定数アノテーションを記述したコンポーネントは SMART deploy で
> > > > > 自動登録されるコンポーネントですか?
> > > > > それとも dicon に明示的に記述していますか?
> > > > > 
> > > > > もし後者なら,dicon で instance="request" を明記すると
> > > > > どうなりますか?
> > > > > 
> > > > > On Wed, 21 Mar 2012 23:42:03 +0900, 鈴木 順 <[E-MAIL ADDRESS DELETED]> wrote:
> > > > > 
> > > > > > 
> > > > > > お世話になっております。鈴木です。
> > > > > > 
> > > > > > とある事象に悩んでおりますので、相談させてください。
> > > > > > 
> > > > > > 【事象】
> > > > > > public static final String COMPONENT = "instance = request";
> > > > > > と指定し、app.diconで定義しているObjectがあります。
> > > > > > 
> > > > > > 意図としては、Request単位でキャッシュしたい値があり、
> > > > > > それを実現する為に、上記のような定義をしております。
> > > > > > 
> > > > > > 発生している事象ですが、実際の処理の際に、
> > > > > > リクエストで生成された上記Objectではないものが、
> > > > > > 実際の処理に利用されている場合があります。(3回に一度位です)
> > > > > > 実際にコンストラクタにログを仕込みHashCodeで確認した結果、
> > > > > > S2起動時にもObjectがnewされ、後続のリクエスト処理の際にも、
> > > > > > その際に生成されたObjectが利用されているように見えます。
> > > > > > 
> > > > > > デバッグなども可能ですので、調査すべき箇所をご教授下さい。
> > > > > > 
> > > > > > 尚、このObjectは、SMART_DEPLOYで、S2に登録される、XXXXLogicが参照しております。
> > > > > > 
> > > > > > また、
> > > > > > Teeda
> > > > > > 1.0.13-sp10-SNAPSHOT
> > > > > > 
> > > > > > S2
> > > > > > 2.4.44
> > > > > > 
> > > > > > を利用しております。
> > > > > > 
> > > > > > 以上 宜しくお願いいたします。
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > _______________________________________________
> > > > > > Seasar-user mailing list
> > > > > > [E-MAIL ADDRESS DELETED]
> > > > > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > > > > 
> > > > > 
> > > > > -- 
> > > > > {
> > > > >   name: "Koichi Kobayashi",
> > > > >   mail: "[E-MAIL ADDRESS DELETED]",
> > > > >   blog: "http://d.hatena.ne.jp/koichik/",
> > > > >   twitter: "@koichik"
> > > > > }
> > > > > 
> > > > > _______________________________________________
> > > > > Seasar-user mailing list
> > > > > [E-MAIL ADDRESS DELETED]
> > > > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > > > 
> > > > _______________________________________________
> > > > Seasar-user mailing list
> > > > [E-MAIL ADDRESS DELETED]
> > > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > > 
> > > 
> > > _______________________________________________
> > > Seasar-user mailing list
> > > [E-MAIL ADDRESS DELETED]
> > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > 
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> 
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user




Seasar-user メーリングリストの案内