Seasar DI Container with AOP

S2Remoting 基本的な使い方

本ドキュメントはS2Remoting-1.0.1について記述しています.旧バージョンについては該当バージョンの配布ファイルに含まれているドキュメントを参照してください.

目次

アーキテクチャ

S2Remotingは,アプリケーションがRMIやWebサービス (JAX-RPC) などのAPIを意識することなく,リモート呼び出しを行えるような共通基盤を提供します.
リモート呼び出しを使わない場合,クライアントアプリケーション(またはコンポーネント)とS2により管理されるコンポーネントは次のような関係になります (クライアントもS2コンテナで管理される場合があります).

S2Remotingを使用すると,次のように分散環境にあるコンポーネントを呼び出すことができるようになります.
クライアントもコンポーネントも何も変更する必要はありません.

S2Remotingはこの図の中のインターセプタを提供します.
また,コネクタのインタフェースおよび抽象クラスを提供しますが,実装クラスは提供しません.コネクタやアダプタの実装クラスは,S2RMIやS2Axisなど,プロトコルごとに個別のプロダクトとして提供されます.

インターセプタの使い方

コンポーネントをリモート呼び出しするには,S2Remotingの提供するRemotingInterceptorを使用します.

    <!-- リモート呼び出しのインターセプタ -->
    <component name="remoting" class="org.seasar.remoting.common.interceptor.RemotingInterceptor"/>

    <!-- コンポーネントのプロキシ (インタフェース) -->
    <component name="名前" class="コンポーネントのインタフェース">
        <aspect>remoting</aspect>
    </component>

<component>要素のclass属性には,コンポーネントのインタフェースを指定します.name属性に指定する名前は,プロトコルによってはリモートオブジェクトのロケーションとして使用されます.詳細は実際に使用するプロダクトのドキュメントを参照してください.
インターセプタにはコネクタを設定する必要があります.通常はインターセプタと同じdiconファイルにコネクタを定義することで,S2により自動インジェクションで設定されます.