0

rmi-iiop アプリケーション (非常に単純なチャット) を構築しようとしています。サーバーがクライアントと通信できるようにする必要があるため、接続ユーザーのインターフェイスを作成することを考えました。

public interface UserInterface extends Remote { 
    public void receiveMessage(String message) throws RemoteException;
}

次に、クライアント側でメソッド server can execute('receiveMessage') を持つ User クラスを作成します。

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:

ここでの違いは、Chat クラスがサーバー上で作成され、クライアントがインターフェイスを使用してそれを使用することです (これは正常に動作します) が、ユーザー クラスはクライアント側で作成する必要があるため、クライアントは部分的にサーバーとして機能します。

私の質問はJava RMI - クライアントをサーバーにします が、rmi-ioop の実装に似ています。

つまり、ローカルオブジェクト参照をサーバーに送信して、操作を実行できるようにするにはどうすればよいですか?

ありがとう!レオンティ

4

2 に答える 2

0

私が欠けていたのは、クライアント側の「Tie」クラス (_User_Tie.class) です。通常は必要ありませんが、オブジェクトがクライアント側で作成される場合に備えて、それも提供する必要がありました。

将来、他の誰かのために時間を節約できることを願っています:)

于 2011-06-22T23:20:22.113 に答える
0

次のようなサーバー インターフェイスを作成します。

public interface ChatServer extends Remote {
  public void registerUser(UserInterface user) throws RemoteException;
}
于 2011-06-16T03:02:07.513 に答える