2006年07月05日
Java RMI
RMIをさくっとさわってみた。手順は以前書いたチュートリアルの指示通りにすればいける。
一つ引っかかった点は会社マシンでサボりつつちょっと動かしてみたときにRMIレジストリの起動に失敗した点だ。Javaのバージョンを最新にしてみても発生したけど家のマシンでは発生しなかった。謎。
STATUS_ACCESS_VIOLATIONでちょっとググってみたところバッファオーバーフローなんかを防ぐためのチェックに引っかかっているような感じ。以下はエラーメッセージ。
129 [main] rmiregistry 1508 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
11089 [main] rmiregistry 1508 open_stackdumpfile: Dumping stack trace to rmiregistry.exe.stackdump
(と思ったらCygwinにもrmiregistry.exeがあって、パスの優先度からCygwinのrmiregistryが実行されて落ちてたようだ・・・。Javaのrmiregistryを実行すればちゃんといけた。)
んで、肝心の実行速度は、リモートオブジェクトの参照を取得するのに300~500ミリ秒ぐらい。リモートオブジェクトのメソッドを呼び出して結果を受け取るのに10~30ミリ秒ぐらいだった。参照の取得がちょっと遅いようだけど接続したりいろいろしてたらこれぐらいかかるのは仕方ないのかな。サーバを起動した直後の接続はクラスを読み込んだりするのか数秒かかっていた。
RMIレジストリで使用するポートは設定できるわけだけど、リモートオブジェクトとの通信で使用するポートは設定できるのかな?
TCPセッションを監視して試してみたらRMIレジストリのポート以外に4332ポートを使用していた。これがリモートオブジェクトとの通信のセッションだろう。複数のポートを使用するとなるとファイアーウォールの設定なんかがめんどっちぃな・・・。
そして、よくわからないものを使おうとすると失敗するのは人類の教訓と言うことで、とりあえずRMI使うにはもっと深くまで知っておかないとダメそうだ。
と言うことで本を読む。
うっ・・・!!1冊6000円超えてるじゃねぇか・・・・。足元みやがって・・・・。原書は4000円なのに。
でもATMバンキングシステムの構築を例としてなかなか実践的で面白そうな内容ぽい。
手段が目的になってるこのブログ検索エンジン開発だし分散システムの勉強と言うことでかっとくか。検索エンジンが完成する確率は低いけど・・・。
Trackback on "Java RMI"
このエントリーのトラックバックURL:
"Java RMI"へのトラックバックはまだありません。
"Java RMI"へのコメントはまだありません。