コールバックとしてのRMI IIOPクライアントオブジェクト
質問
RMI-IIOPアプリケーションを構築しようとしています(非常に簡単なチャット)。私の考えは、私の考えが接続されたユーザーのインターフェイスを作成することでした。
public interface UserInterface extends Remote {
public void receiveMessage(String message) throws RemoteException;
}
次に、クライアント側では、Methods Serverを使用してユーザークラスを作成します( 'Receivemessage'):
public class User extends PortableRemoteObject implements UserInterface {
protected User() throws RemoteException {
super();
}
@Override
public void receiveMessage(String message) throws RemoteException {
client.addMessageToGUI();
}
}
私が使う rmic -iiop Chat User
生成します _Chat_Tie.class _ChatInterface_Stub.class _User_Tie.class _UserInterface_Stub.class
すべてのファイルをサーバー側とクライアント側に配置し、アプリケーションを実行した後、次のエラーが発生します。java.rmi.StubNotFoundException: Stub class not found: User_Stub; nested exception is:
ここでの違いは、チャットクラスがサーバーで作成され、クライアントはインターフェイス(正常に動作する)を使用して使用することですが、ユーザークラスをクライアント側で作成する必要があるため、クライアントはサーバーとして部分的に動作することです。
私の質問はに似ています Java RMI-クライアントをサーバーにするしかし、RMI-IOOP実装の場合。
それでは、言葉で - ローカルオブジェクト参照をサーバーに送信して、操作を実行できるようにするにはどうすればよいですか?
ありがとう!レオンティ
解決 2
私が欠けていたのは、クライアント側の「タイ」クラスです(_user_tie.class)。通常、それは必要ありませんが、クライアント側にオブジェクトが作成された場合に備えて、私もそれを提供する必要がありました。
それが将来他の誰かのために時間を節約することを願っています:)
他のヒント
次のようなサーバーインターフェイスを作成します。
public interface ChatServer extends Remote {
public void registerUser(UserInterface user) throws RemoteException;
}