トップ 一覧 検索 ヘルプ RSS ログイン

技術的雑談-RMIのURLの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!技術的雑談-RMIのURL

!!環境
JDK1.4.2_08とJDK1.5.0._03

!!現象
RMI RegistryでDefaultではないポート(1099)に対してrmiregistryを置いた場合にうまく通信できない。

で、よく見ると''java.rmi.Naming#lookup(String url)''に「rmi://localhost:9999/hogehoge」とか指定している。

!!対処
''java.rmi.Naming''のjavadocを見るとわかるのだが、RMIで指定するURL形式では'''先頭に「rmi:」なんてつけない!!!'''
(いくつかのSiteでそんなSampleを見かけるが、デマです。)

正式な形式は

 [// ホスト [: ポート]/] オブジェクト名]

です。

つまり、

 //localhost:9999/hogehoge

と書くのが正しい。
ホストやポートが省略されるとそれぞれ「localhost」「デフォルト(1099)」が指定されたとみなされるらしい。

先程の「rmi://localhost:9999/hogehoge」は、
「'''localhost'''の'''デフォルトポート(1099)'''の'''rmi://localhost:9999/hogehoge'''という名前で公開されているObject」
を指している事になる。
で、rmiregistryは9999に口をあけていたりすると「接続できねぇよ!」とNaming#lookup()で怒られる事になる。

教訓:Javadocは「ちゃんと」読みましょう。

!!履歴
2005/7/14 -- 初版

[[技術的雑談]]へ戻る

!!突っ込み
{{comment}}

[[技術的雑談]]へ戻る

{{trackback}}

[[技術的雑談]]へ戻る