クライアント側の設定
クライアント側で必要な設定は次の通りです.
- コンポーネントのインタフェースに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で接続するホストやポート番号はRMIConnectorCustomizer
の
baseURLAsString
プロパティに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で説属するホストとポート番号はRMIConnectorImpl
の
baseURLAsString
プロパティで設定します.