Javaベースの大きなAPIがあります。セキュリティ上の理由から、私はそれをクライアントとクライアントの間で分割しようとしています。アプリケーションサーバーアーキテクチャ私はすでに、ここで私を助けることができるいわゆる "Javaアプリケーションサーバー"(フレームワーク)がないと判断しましたが、間違っている場合は、ウェブ指向のアプリケーションに限定されていないものを指摘してください。つまり、私は自分のアプリケーションサーバーを動かしています。Java RMI:オブジェクトを渡さず、クライアント側のインスタンスにそのメソッドを公開するためのアーキテクチャ
既存のAPIは、実行する必要があるものを実装する単一の「オブジェクト」のインスタンス化されたインスタンスへのメソッド呼び出しを介して既にアクセスされています。
IIUC(私が正しく理解していれば)、私はAPIオブジェクトの個々のインスタンスをインスタンス化するRMIサーバを設定できます - それらのプールをインスタンス化し、クライアントからの着信RMI呼び出しにオブジェクトインスタンスとして "誰がインスタンスを求めるか。次に、そのインスタンスの任意のメソッドを呼び出すことができ、これらのメソッドの実際の処理はすべてサーバー側で行われ、結果はRMIメカニズムを介して返されます。
これまでのところ、とても良いと思います。
私が正しく理解していれば、すべてのメソッドと属性が公開されていることを理解しています(「UnicastRemoteObjectを拡張」するか、属性を制限することができます)。メソッドがすべてインターフェイスで定義されている中間クラス定義を作成することで、リモートから利用可能にしたいメソッドです。
このアプローチを使用すると、元のAPIをそのまま使用できます。
より高度な設計に移行すると、インスタンス化が高価なので、私はt o事前インスタンス化されたインスタンスのプールを持つ。これらの公開可能オブジェクトのインスタンスを作成し、呼び出し側クライアントに返す別のクラスが必要ですか?あるいは、何とか既存のRMI機構内で、あるいは私のカプセル化APIサーバクラス内で何とかしてもいいですか?
私はむしろすべての質問をするのではなく、プロトタイプを書いてみたいと思います... – home
@home - 私は実際にそれを行いました - ここには素晴らしい小さなものがあります:http://littletutorials.com/ 2008/07/14/the-10-minutes-getting-with-rmi-tutorial/Troubleは、実際に処理が実際に行われている場所を示すのは難しいです。 –
ローカルとリモートの別々のインタフェースを持つEJB3は、あなたが望むように聞こえる。コンテナは、トランスレーション管理、セキュリティ、プーリング、永続性など、他にもたくさんの便利なサービスを提供します。 – Perception