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

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 11月 29日 (木) 20:36:07 JST


関修康です。

>小林さん
有り難うございます、教えて頂きました方法で期待通りの動作をさせることが出来ました。

> S2Remoting 1.1.2 から,forceRemote プロパティを
> true にすることで,抽象メソッドでなくても
> リモート呼び出しをするようになりました.
こちらも、この修正のおかげで設定しやすくなりました。
本当にありがとうございました。

ざっくり今回実装した内容を展開しておきます。

[RemotingInterceptor]をapp.diconに実装したため[RemotingInterceptor]を
修正した場合にホットデプロイが効かないと言う制限がかかっている認識です
(こんなところさわりませんが)

ServiceやLogicのホットデプロイは動作しているようです。

■app.dicon

<!-- リモート接続先の数だけをコンポーネント化 -->
<component name="serverARemotingInterceptor"
      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のIP]:1108/"</property>
    </component>
  </property>
</components>

 [その他省略]

■server.dicon

<!-- サーバー毎に切り替えるために設定しておく -->
<component name="server">"serverA"</component>

■customizer.dicon

<include path="server.dicon"/>

<!-- ここでサーバー毎にcustomizerを切り替える -->
<include condition="server == 'serverA'" path="servicecustomizer/customizer_serverA.dicon"/>
<include condition="server == 'serverB'" path="servicecustomizer/customizer_serverB.dicon"/>
<include condition="server == 'serverC'" path="servicecustomizer/customizer_serverC.dicon"/>
<include condition="server == 'serverD'" path="servicecustomizer/customizer_serverD.dicon"/>
<include condition="server == 'serverE'" path="servicecustomizer/customizer_serverE.dicon"/>
<!-- ※ ルートクラスパスに customizer がたくさん出てきて見づらかったので、専用ディレクトリですっきり -->

■customizer_serverA.dicon (サーバーの数だけ[toServerACustomizer]の部分を個別にカスタマイズ)

<!-- 基本は customizer.dicon の内容をまるまるコピー -->
<!-- s2rmi-customizer.dicon は今回利用せず -->

<component name="default-customizer.dion"/>

<!-- AspectCustomizerを必要な数だけ作成 -->
<component name="toServerACustomizer"
    class="org.seasar.framework.container.customizer.AspectCustomizer">
  <property name="interceptorName">"serverARemotingInterceptor"</property>
  <initMethod name="addClassPattern"
    <arg>"xxx.yyy.zzz.aaa"</arg>
    <arg>".*"</arg>	<!-- ここでどのクラスがどのサーバーにRMIさせるかを設定 -->
  </initMethod>
</component>

<component name="serviceCustomizer"
    class="org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
    <arg>toServerACustomizer</arg>
  </initMethod>
  <initMethod name="addCustomizer">
    <arg>toServerBCustomizer</arg>
  </initMethod>
  <initMethod name="addCustomizer">
    <arg>toServerCCustomizer</arg>
  </initMethod>
  <initMethod name="addCustomizer">
    <arg>toServerDCustomizer</arg>
  </initMethod>
  <initMethod name="addCustomizer">
    <arg>toServerEustomizer</arg>
  </initMethod>
</component>

[その他省略]




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