IIOPメッセージの解析のため、サンプルのCORBAプログラムを動かしてEtherealでパケットキャプチャをしようとしたときに直面した問題。
- UNIXでは1024以下のポートはroot権限でしか使用できないのに、J2SE5.0標準のCORBA実装ではデフォルトでポート900番を使用するためSocketExceptionが発生する
今までOpenORBばっかり使っていたので、この問題にぶつかってしまいました。
とりあえず、J2SE5.0標準のCORBAを使用するときは、-ORBInitialPort 9999 のように明示的に使用するポート番号を指定してネーミングサービスやサーバプログラムを起動して対処します。
GIOPメッセージの大きさ
次のインタフェースで定義されたオペレーションgetCountを呼び出すリクエストメッセージのサイズは、TCPの中に格納されるGIOPメッセージ部分で初回326バイト、2回目が142バイトになります。推測ですが、CORBAオブジェクトに対して初回のメッセージを送るときは、型情報のようなものを付加しています。Etherealで解析すると、ServiceContextListの数が1つ多く、SendingContextRunTimeというデータが180バイトほど付いています。
内訳は今後解析予定・・・。
module counter_ex1 { interface Counter { long getCount(); }; };