私は現在、実行を手伝っている夏のプログラムの出席を管理する小さなプロジェクトに取り組んでいます。RMI サーバーはオフィスから実行され、次のコードを使用して特定のポートが設定されています。
Registry registry = LocateRegistry.createRegistry(4051);
RemoteManager stub = (RemoteManager) UnicastRemoteObject.exportObject(theServer, 4051);
registry.rebind(SERVER_NAME, stub);
wheretheServer
は、システムのサーバーとして機能するオブジェクトへの参照であり、サーバーを表すために使用されるSERVER_NAME
単なる静的です。String
示されているように、レジストリはサーバーをポートにバインドして4051
、クライアントがクエリできるようにします。現在、サーバーと複数のクライアントインスタンス(同じクライアントプログラムを実行している12人の教師)間の相互通信に取り組んでおり、現在、クライアントstubs
がクライアント登録のためにサーバーに自分自身を送信するように設定されています.
public void registerClient(INTERFACE_Client teach) throws RemoteException {
.
.
.
}
whereINTERFACE_Client
はRemote
インターフェイスを拡張し、クライアントは次の呼び出しによって送信されます。
server.registerClient((INTERFACE_Client) UnicastRemoteObject.exportObject(this, 4052));
4052
自分が何をしているのかわからなかったので、ポートを選択しました。また、スタブをレジストリにバインドしませんでした。それを行う良い方法はありますか?クライアント ポートをハードコードしたため、12 人の教師全員がそれぞれのクライアント インスタンスからポート 4052 を使用してオブジェクトをエクスポートします (少なくとも私はそう見ています)。ポートをランダム化する必要がありますか? ポートを含めるべきではありませんか (それを必要としない方法もあります)。役立つヒントがあれば大歓迎です。
免責事項として、オフィスのユーザーが教師にメッセージを送信できるように、サーバー内のクライアントへの参照が必要です。(サーバー -> クライアント通信)。クライアントはレジストリで参照できるため、サーバーへの参照を既に持っています。
なにか提案を?