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