ひがさんのイメージ

S2RemotingとそのRMI実装についてのコメントをひがさんから頂きました。ありがとうございます。

内容を読んで見ますと、

リモートのオブジェクトごとにURLを設定するのは、gatewayURLの設定が分散するので出来れば避けたいと思ってます。

なるほど。私としても個々のリモートオブジェクトを登録するのではなく、S2Container内のコンポーネントを呼び出せるAdaptorを登録する方がよいと思います。リモートインジェクションと言えるでしょうかね?
#ちなみにSpringはRemoteインタフェースを実装したオブジェクト、またはオブジェクトをリモート呼び出しできるようにラップしたラッパーオブジェクトをリモートオブジェクトとして個々にregistryに登録しているようです。

S1のorg.seasar.serverにあるMBeanProxy、RMIConnector、AbstractSocketService、RMIAdapter、RMIAdapterImpl、RMIAdapterServiceが参考になると思います。

ひがさんはS1で既に実装しているのですね。恥ずかしながら知りませんでした。

RMIをプロトコルに使う場合、最初にサーバからスタブをソケット経由で取得してRemotingConnectorでキャッシュし、個々の呼び出しはスタブを呼び出すようにしたほうが、良いと思います。余分なRMIRegistryもいりません。

そして、このRMIRegistryいらずの上記の方法。う〜む。知りませんでした。こんなことできるんですね。凄い。
ただこの点については少し考えたいですね。今の所LocateRegistryクラスを利用して内部的にregistryを起動することを考えています。
Registryへの最初のlookupでスタブを取得し、キャッシュとして利用することで同じようにはできないでしょうか。

これらの情報をもとに、検討して行きませう。