- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!技術的雑談-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}}
[[技術的雑談]]へ戻る