torutkのブログ

ソフトウェア・エンジニアのブログ

J2SE5.0標準CORBAの注意点

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();
};
};