2011-10-20 3 views
1

私は、この新しいクライアントを使用できることを知らせるために、いくつかのRMIサーバーに接続するRMIクライアントを持っています。メソッドのリモートオブジェクトをRMIサーバーに渡しますか?

ように、私は直接いくつかのリモートオブジェクトを渡すことができます:

serverRemoteObject.registerClient(theClientRemoteObjectTheServerShouldUse); 

は、実際にサーバに彼が私のクライアントに接続せずに使用することができますいくつかのオブジェクトを与えるのだろうか? 次の質問は、それが可能であると言いますが、本当の例が与えられなかった。

Is it possible to use RMI bidirectional between two classes?

アンドリュー

+0

「自分のクライアントに接続していない」部分はもちろん不可能です。そこで何が起こっているのかわかりません。 – EJP

+0

本当に間違っています。私は "私のクライアントのレジストリにオブジェクトを要求することなく"を意味しました。 – AndrewBourgeois

答えて

3

はい、できます。これは、RMIの場合にコールバックが正確に機能する方法です。オブジェクトをサーバーに送信し、サーバーがオブジェクトのメソッドを呼び出すと、サーバー上ではなく「クライアント」のJVMで実行されます。サーバに渡すことができるリモートオブジェクトとしてRemoteインタフェースを実装するオブジェクトをエクスポートする方法は、UnicastRemoteObject.exportを参照してください。

interface UpdateListener extends Remote { 

    public void handleUpdate(Object update) throws RemoteException; 

} 

class UpdateListenerImpl implements UpdateListener { 

    public void handleUpdate(Object update) throws RemoteException { 
    // do something 
    } 

} 

//somewhere in your client code 
final UpdateListener listener = new UpdateListenerImpl(); 
UnicastRemoteObject.export(listener); 
関連する問題