IIOPプロトコルを使用してCORBAでアプリケーションを使用していますが、別のORB実装であるJDK6のJavaIDLコンポーネントを使用しています。
Java言語でのクライアントとサーバーの両方の実装。
JDK ORBの実装に、サーバー(ORB)コードからクライアントORBのホストとポートを取得する方法はありますか?
または
IIOPプロトコルを使用して、クライアントにホストとポートを取得する方法はありますか?
これは、要求された人を追跡するためにクライアントを識別するために行っています
これを行うポータブルな方法はないと思います。おそらく、あなたの特定の ORB のためのものがあると思いますが、わかりません。CORBA は、トランスポートの詳細をアプリケーションから隠そうと非常に努力していることを思い出してください。アプリケーションは IIOP を使用していない可能性があるため、いずれにしても TCP ホストおよびポート情報を取得する方法はありません。
サーバーがクライアントを認識できるように、追加の識別子パラメーターを IDL に追加することを検討してください。また、クライアントにサーバー上の「登録」機能を呼び出させることを検討することもできます。サーバーは、すべてのクライアントが後続の呼び出しでサーバーに返す必要がある識別子を渡します。
この識別子は、文字列や整数のように単純な場合もあれば、サーバーが公開鍵で検証する必要があるある種のセキュリティ トークンのように複雑な場合もあります。それはすべて、アプリケーションの要件によって異なります。
状況によって異なりますが、テスト、ロギング、デバッグの目的で IOR からホスト/ポートを抽出する必要がある場合があります。IOR にはホストとポートが含まれています。IOR が表すバイト配列からデコードするだけで済みます。したがって、週末に時間があれば、GNU クラスパスの CORBA 仕様と IorParser.java(大規模な依存関係) を例に取り、自分でデコードしてください:)
私のように時間がない場合は、ORB に付属しているコマンド ライン ユーティリティを使用できます。
私にとっては、答え 5 で十分でした。Java ベースのテスト ツールに Jacorb を使用しました。ただし、PrintIOR では、org.jacorb.orb.ORB が org.omg.CORBA.ORB.init() によってインスタンス化される必要があります。そのため、同じ JVM で JDK ORB を使用しなければならない場合は注意が必要です。