About

Documentation

プロジェクト文書

Built by Maven

クライアント側の設定

クライアント側で必要な設定は次の通りです.

  • コンポーネントのインタフェースにS2Remotingのインターセプタを適用する.
  • S2RMIのコネクタを設定する.

SMART deployを使う場合

S2RMIはSeasar2.4で導入されたSMART deployに対応しています. SMART deployを利用すると設定を簡素化することができます.

開発時にはSMART deployの一つであるHOT deployを利用することができます. HOT deployを利用すると,クライアントがWebアプリケーションの場合にWebコンテナを起動したまま クライアントのソースを変更してそのままテストすることができます.

以下ではS2RMIサンプルのクライアント側に含まれる設定ファイルについて説明します. s2rmi-examples-client/src/main/resources 以下にあります.

s2container.dicon

SMART deployを利用するにはs2container.diconが必要です. S2RMI固有の設定は必要ありません. 以下はenv.txtでHOT deploy / COOL deployを切り替えられるようにした設定の例です.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
  "http://www.seasar.org/dtd/components24.dtd">
<components xmlns:xi="http://www.w3.org/2001/XInclude">
  <include condition="#ENV != 'ut'" path="cooldeploy.dicon"/>
  <include condition="#ENV == 'ut'" path="hotdeploy.dicon"/>
</components>

convention.dicon

convention.diconにはS2RemotingおよびS2RMIのルートパッケージを設定します.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
  "http://www.seasar.org/dtd/components24.dtd">
<components xmlns:xi="http://www.w3.org/2001/XInclude">
  <component class="org.seasar.framework.convention.impl.NamingConventionImpl">
    <!-- アプリケーション固有のルートパッケージ -->
    <initMethod name="addRootPackageName">
      <arg>"examples.rmi"</arg>
    </initMethod>

    <!-- S2Remoting のルートパッケージ -->
    <initMethod name="addRootPackageName">
      <arg>"org.seasar.remoting.common"</arg>
    </initMethod>

    <!-- S2RMI のルートパッケージ -->
    <initMethod name="addRootPackageName">
      <arg>"org.seasar.remoting.rmi"</arg>
    </initMethod>
  </component>
</components>

creator.dicon

creator.diconにはサービスのCreatorに加えて,S2Remotingのインターセプタおよび S2RMIのコネクタをコンポーネントとして登録するためのCreatorを設定します. S2RMIのサンプルではヘルパーも使用しているため,そのCreatorも設定しています.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
  "http://www.seasar.org/dtd/components24.dtd">
<components xmlns:xi="http://www.w3.org/2001/XInclude">
  <include path="convention.dicon"/>
  <include path="customizer.dicon"/>

  <component class="org.seasar.framework.container.creator.HelperCreator"/>
  <component class="org.seasar.framework.container.creator.InterceptorCreator"/>
  <component class="org.seasar.framework.container.creator.ServiceCreator"/>
  <component class="org.seasar.remoting.common.creator.ConnectorCreator"/>
</components>

通常のアプリケーションではより多くのCreatorが必要になります. Seasar2の配布ファイルに含まれるcreator.diconには 通常のアプリケーションで必要になるCreatorが設定済みなので,そちらをベースに S2RMIのConnectorCreatorを追加するのがいいでしょう.

customizer.dicon

customizer.diconにはサービスに加えてS2RemotingのインターセプタおよびS2RMIのコネクタの コンポーネント定義をカスタマイズするためのCustomizerを設定します.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
  "http://www.seasar.org/dtd/components24.dtd">
<components xmlns:xi="http://www.w3.org/2001/XInclude">
  <!-- S2RMI 用カスタマイザのインクルード -->
  <include path="s2rmi-customizer.dicon"/>

  <!-- S2RMI コネクタのカスタマイザ -->
  <component name="connectorCustomizer" class="org.seasar.remoting.rmi.customizer.RMIConnectorCustomizer">
    <!-- RMI 接続するホストやポート番号はここで設定します.-->
    <property name="baseURLAsString">"rmi://localhost:1108/"</property>
  </component>
</components>

s2rmi-customizer.diconはその中でdefault-customizer.diconを インクルードしています. customizer.diconの中でs2rmi-customizer.diconより前に default-customizer.diconをインクルードしないようにしてください.

RMIで接続するホストやポート番号はRMIConnectorCustomizerbaseURLAsStringプロパティにURL形式で設定します.

s2rmi-customizer.diconはその中でサービスのカスタマイザを設定します. アプリケーションでサービスのカスタマイザを変更したい場合は以下を参考に customizer.diconの中でサービスのカスタマイザを定義してください.

  <component name="serviceCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
    <initMethod name="addCustomizer">
      <arg>myCustomizer</arg>
    </initMethod>
    <initMethod name="addCustomizer">
      <arg>rmiServiceCustomizer</arg>
    </initMethod>
  </component>

s2rmi-customizer.diconはその中でインターセプタのカスタマイザを設定します. アプリケーションでインターセプタのカスタマイザを変更したい場合は以下を参考に customizer.diconの中でインターセプタのカスタマイザを定義してください.

  <component name="interceptorCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
    <initMethod name="addCustomizer">
      <arg>myCustomizer</arg>
    </initMethod>
    <initMethod name="addCustomizer">
      <arg>rmiInterceptorCustomizer</arg>
    </initMethod>
  </component>

SMART deployを使わない場合

クライアント側のdiconファイルに定義すべきコンポーネントは次の通りです.

  • サービスのインタフェース
  • org.seasar.remoting.common.interceptor.RemotingInterceptor
  • org.seasar.remoting.rmi.connector.RMIConnector

リモートオブジェクトは通常サービスとしてインタフェースと実装クラスを作成します. クライアント側ではサービスのインタフェースのみS2コンテナに定義します.

clinet.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
  "http://www.seasar.org/dtd/components24.dtd">
<components>
  <component name="helloService"
      class="examples.rmi.service.HelloService">
    <aspect>remotingInterceptor</aspect>
  </component>

  <component name="remotingInterceptor"
      class="org.seasar.remoting.common.interceptor.RemotingInterceptor"/>

  <component class="org.seasar.remoting.rmi.connector.impl.RMIConnectorImpl">
    <property name="baseURLAsString">"rmi://localhost:1108/"</property>
    <initMethod name="lookup"/>
  </component>
</components>

RMIで説属するホストとポート番号はRMIConnectorImplbaseURLAsStringプロパティで設定します.