[Seasar-user:18625] Re: [S2Axis2]マルチスレッドで同時にサービス呼び出しを行った際にスレッド間で同期してしまう
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 10月 9日 (金) 21:00:19 JST
小林 (koichik) です.
Date: Fri, 09 Oct 2009 20:30:42 +0900
From: Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18623] Re: [S2Axis2]マルチスレッドで同時にサービス呼び出しを行った際にスレッド間で同期してしまう
> Echo の定義も prototype にしていますか?
>
> > SingletonS2ContainerFactory.setConfigPath("org/seasar/remoting/axis2/examples/ex01/EchoTest.dicon");
> > SingletonS2ContainerFactory.init();
> > S2Container container = SingletonS2ContainerFactory.getContainer();
> > Echo echo1 = (Echo)container.getComponent(Echo.class);
> > Echo echo2 = (Echo)container.getComponent(Echo.class);
>
> の echo1 と echo2 が同じインスタンスだと,
> connector を prototype にしても意味はないと
> 思います.
ごめんなさい,Echo が prototype になっても,
インターセプタはクラス単位にインスタンス化
されるので,これではダメですね.
Echo は singleton のままでも構わないので例えば
InterceptorAdapter を使用して
http://www.seasar.org/wiki/index.php?FAQ%2FS2AOP#i45fc6c8
<component name="echo" class="...Echo">
<aspect>
<component class="org.seasar.framework.aop.interceptors.InterceptorAdapter">
<initMethod name="add"><arg>"ioRemoting"</arg></initMethod>
</component>
</aspect>
</component>
<component name="ioRemoting" instance="prototype"
class="org.seasar.remoting.common.interceptor.RemotingInterceptor">
...
</component>
<component name="ioConnector" instance="prototype"
class="org.seasar.remoting.axis2.connector.AxisInOutConnector">
...
</compnent>
SMART deploy を使う場合はこちらを参照してください.
http://www.seasar.org/wiki/index.php?FAQ%2FS2AOP#q69751d4
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内