JNDI (Configured SIB) から websphere 7 キューを検索する必要があります。最初に、リモート Websphere サーバーにアクセスするクライアント プログラムを作成しました。com.ibm.ws.admin.client、com.ibm.ws.runtime、com.ibm.ws.sib.client.thin.jms、com.ibm.ws.webservices.thinclient jar ファイルを追加しました。
コードは次のとおりです。
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "iiop://localhost:2809");
リモートクライアントとしてアクセスしているため、これはうまく機能しません。したがって、これを追加しました。
env.put("java.naming.corba.orb",org.omg.CORBA.ORB.init((String[])null,null));
これは今のところうまくいきます。次に、上記の行を削除し、ターゲット JDK を IBM JDK に移動しました。その場合も問題なく動作します。
サーバープログラムで上記のキューにアクセスする必要があるときに直面する実際の問題。これは別の JVM で実行されます。リモート JNDI キューにアクセスしようとすると、クラス キャスト例外が発生します。IBM ではなく、デフォルトの Sun ORB 実装をロードするためだと思います。com.ibm.ws.orb jar を追加しましたが、まだ運がありません。Sun ORB をロードします。したがって、クラスキャスト例外が発生します。
上記のように、org.omg.CORBA.ORB をロードする機能がありません。これを実行する方法はありますか?何か不足していますか?Websphere 8.5 からのフィードバックも歓迎します。
注: これは Websphere MQ ではありません。Websphere アプリケーション サーバー キューについて言及しています。