0

次のように、特定のポートでレジストリを作成できます。

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
...
Registry reg;
...
reg = LocateRegistry.getRegistry(port);

それはいいです。しかし、最初に初期化した後、必要に応じてRegistry( )のポート番号を変更するにはどうすればよいですか?reg

を再作成しようとしましreg = LocateRegistry.getRegistry(port)たが、いくつかの例外があります..

4

2 に答える 2

0

このポートがすでにrmiによって使用されている場合、それを閉じることはできません。

現在のRMI実装の既知の制限は、仮想マシンの存続期間中、サーバー(パッシブ/リスニング)TCPポートバインディングを決して閉じないことです。> Blockquote

ソース: http: //bugs.sun.com/view_bug.do?bug_id = 4508962

多分これはあなたを助けることができます:

ただし、例外を投稿してください。

于 2013-01-10T19:08:16.887 に答える
0

次のように、特定のポートにレジストリを作成できます。

いいえ、できません。そのコードは、そのポートでレジストリを参照するスタブを構築するだけで、実行されていない可能性さえあります。あなたが言ったことを行う方法はLocateRegistry.createRegistry().

レジストリのポート番号を変更するにはどうすればよいですか

によって返されたオブジェクトをアンエクスポートし、別のポート番号createRegistry()で呼び出します。createRegistry()

なぜそんな奇妙なことをしたいのかは別の問題です。目的は何ですか?

再現してみました

いいえ、そうではありません。上記を参照してください。他のポートを指すスタブを作成するだけです。レジストリは作成されません。そのポートでレジストリが実行されていない場合、スタブを使用すると失敗します。

于 2013-01-10T20:20:27.923 に答える