S2Remoting
当初、私が考えていたのはこんな感じ。
登場人物
- RemotingInterceptor
- クライアントからの呼び出しをRemotingConnectorの呼び出しに変換する。
- RemotingConnector
- クライアントからサーバへの接続を担当
- プロトコルごとに実装
- プロパティ
- gatewayURL(例 http://localhost/myapp/gateway)
- メソッド
- invoke(String componentName, String methodName, Object[] args) : Object
- RemotingGateway
- ComponentInvoker
リモートのオブジェクトごとにURLを設定するのは、gatewayURLの設定が分散するので出来れば避けたいと思ってます。
RMIをプロトコルに使う場合、最初にサーバからスタブをソケット経由で取得してRemotingConnectorでキャッシュし、個々の呼び出しはスタブを呼び出すようにしたほうが、良いと思います。余分なRMIRegistryもいりません。
S1のorg.seasar.serverにあるMBeanProxy、RMIConnector、AbstractSocketService、RMIAdapter、RMIAdapterImpl、RMIAdapterServiceが参考になると思います。