[Seasar-user:11835] Re: 【S2RMI】 Implファイルがあるとリモート実行されない

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 11月 28日 (水) 19:00:16 JST


小林 (koichik) です.

Date:    Tue, 27 Nov 2007 22:05:41 +0900
From:    [E-MAIL ADDRESS DELETED]
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11824] Re: 【S2RMI】 Implファイルがあるとリモート実行されない

> しかしながら、RMIのコネクターを2個以上コンポーネント化させて
> パッケージ毎にコネクターを割り当てる方法が思いつかない状態です。

現状だと,これを SMART deploy のみで実現
するのは困難です.

Service 等は SMART deploy を使うことにして,
Interceptor や Connector は dicon に定義する方が
いいと思います.

まずは RemotingInterceptor を必要なだけ定義します.

<component name="remotingInterceptorA"
      class="org.seasar.remoting.common.interceptor.RemotingInterceptor">
  <property name="forceRemote">true</property>
  <property name="connector">
    <component class="org.seasar.remoting.rmi.connector.impl.RMIConnectorImpl">
      <property name="baseURLAsString">"rmi://serverA:55001/"</property>
      <initMethod name="lookup"/>
    </component>
  </property>
</components>
<component name="remotingInterceptorB"
      class="org.seasar.remoting.common.interceptor.RemotingInterceptor">
  <property name="forceRemote">true</property>
  <property name="connector">
    <component class="org.seasar.remoting.rmi.connector.impl.RMIConnectorImpl">
      <property name="baseURLAsString">"rmi://serverB:55001/"</property>
      <initMethod name="lookup"/>
    </component>
  </property>
</components>

S2Remoting 1.1.2 から,forceRemote プロパティを
true にすることで,抽象メソッドでなくても
リモート呼び出しをするようになりました.


次に,ServiceCustomizer でパッケージごとに
使用する RemotingInterceptor を指定します.

<component name="serviceCustomizer" 
    class="org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
    <arg>
      <component class="org.seasar.framework.container.customizer.AspectCustomizer">
        <property name="interceptorName">"remotingInterceptorA"</property>
        <initMethod name="addClassPattern">
          <arg>"xxx.yyy.zzz.aaa"</arg>
          <arg>".*"</arg>
        </initMethod>
      </component>
    </arg>
  </initMethod>
  <initMethod name="addCustomizer">
    <arg>
      <component class="org.seasar.framework.container.customizer.AspectCustomizer">
        <property name="interceptorName">"remotingInterceptorB"</property>
        <initMethod name="addClassPattern">
          <arg>"xxx.yyy.zzz.bbb"</arg>
          <arg>".*"</arg>
        </initMethod>
      </component>
    </arg>
  </initMethod>
</component>

addClassPattern で特定の RemotingInterceptor を
適用するパッケージを指定してください.
# 複数指定可

例によって (?) 試さずにメーラで書いてるだけなので
問題あるかもしれませんが,その際にはまた報告ください.



--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>



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