1

私は現在、クライアント側で複数選択フォームを作成して入力し、サーバー側で評価するだけでなく保存するためのツールを開発することにより、Java を学んでいます。ネットワーク部分には RMI チュートリアルのコード スケルトンを使用しましたが、今まで問題なく動作していました。クライアント アプリケーションとサーバー アプリケーションは同じパッケージに含まれていますが、別のアプリケーションとして実行されます。開発を容易にするために、現在は両方とも同じシステムで実行されていますが、これは作業が完了すると変更されます。

それでは、いくつかのコードと正確に何がうまくいかないのかを追跡しましょう。

サーバー.java

Server() throws RemoteException {
    super();
}

public static void main(String[] args) {
    try {
        LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
    }
    catch (RemoteException ex) {
        System.out.println("SERVER: " + ex.getMessage());
    }

    try {
        Naming.rebind("Server", new Server()); <---
    }
    catch(MalformedURLException ex) {
        System.out.println("SERVER: " + ex.getMessage());
    }
    catch(RemoteException ex) {
        System.out.println("SERVER: " + ex.getMessage());
    }
}

[...] methods that are called by the client via ServerInterface

<--- クライアント GUI が開始される場所のマーク。

クライアント.java

private static Gui_loadSets gui_loadSets = new Gui_loadSets();

public static void main(String[] args) {
    loadGuiLoadSets();
}

これは、最初の GUI が表示される場所です。ロードするフォームを選択するもの。この GUI は、サーバーを起動することによってロードされます。したがって、サーバーは実際にはクライアントアプリをロードしませんが、代わりにどういうわけか魔法のように GUI にアクセスし、理由もなく表示します。

GUI がロードされる前に行に「ステップイン」しようとしましたが、最終的には無限ループに陥ってしまうため、何が起こっているのかまったくわかりません。

これはここでの私の最初の質問です。明らかなことを見逃していたら、ご容赦ください。事前にご協力いただきありがとうございます。さらにコードが必要な場合は、喜んで提供しますが、残りのコードのほとんどは、複数選択フォームに関するものです。

4

2 に答える 2

0

Naming.rebind()サービス名だけでなく、URL が必要です。そのはず

Naming.rebind("rmi://localhost/Server", new Server());

しかし、この行に関するあなたのコメントには困惑しています。これ-->は、「クライアント GUI が開始された場所をマーク」するのではなく、リモート オブジェクトが構築され、エクスポートされ、レジストリにバインドされる行をマークします。クライアント GUI はクライアントにあります。

于 2012-09-13T04:12:40.420 に答える
0

あなたの努力のおかげで、私は今それを働かせました。

サーバーがオブジェクトを作成していた非常に基本的なクラスは、クライアントによって提供されたメソッドを参照していました。どうやらこれが問題を引き起こしたようです。最初からそこにあったので、忘れていたに違いありませんが、どういうわけか、最近目に見える問題になり始めました。

私の悪いデザインでご迷惑をおかけして申し訳ありません。:)

また、眉をひそめずにこの問題を解決済みとしてマークするにはどうすればよいですか? 人々は承認済みの回答ボタンを取得することを重要視していますか? 私が信じているコメントに対してこれを行うことはできません。

于 2012-09-13T05:39:41.203 に答える