デフォルト・メッセージング・プロバイダー: トラブルシューティングに関するヒント

この一連の具体的なヒントは、デフォルトのメッセージング・プロバイダーの JMS メッセージングに関する問題のトラブルシューティングに役立てることができます。

WebSphere® Application Server メッセージングの問題のトラブルシューティングに関する一般的なヒントについては、 メッセージングのトラブルシューティングのヒントを参照してください。 このトピックでは、デフォルト・メッセージング・プロバイダーおよび そのサービス統合テクノロジーの使用に固有の追加ヒントを紹介しています。

既存のメッセージが消費されていないため、宛先がいっぱいになっており、これ以上メッセージを受信できない。

デフォルト・メッセージング・プロバイダーを使用するようにアプリケーションを構成する場合は、そのアプリケーションを次のいずれかのリソース・セットに関連付けます。
  • Java™ Message Service (JMS) のアクティベーション・スペックを使用して接続する 1 つ以上のメッセージ Bean。
  • JMS 接続ファクトリーおよび JMS 宛先を使用して接続されている 1 つ以上のエンタープライズ Bean。

管理コンソールの「この宛先のアプリケーション・リソース」パネルを使用して、 その宛先を使用しているアプリケーションおよび JMS リソースの構成を検査することができます。

このパネルを使用すると多くの関連リソースを概観できるようになるため、問題の原因を見つけやすくなります。

JMS アプリケーションがメッセージを送受信できなくなった

デフォルト・メッセージング・プロバイダーを使用するようにアプリケーションを構成する場合は、そのアプリケーションを次のいずれかのリソース・セットに関連付けます。
  • Java Message Service (JMS) のアクティベーション・スペックを使用して接続する 1 つ以上のメッセージ Bean。
  • JMS 接続ファクトリーおよび JMS 宛先を使用して接続されている 1 つ以上のエンタープライズ Bean。

メッセージ Bean またはエンタープライズ Bean へのアプリケーションの接続は、アプリケーションのデプロイメント記述子またはアプリケーション自体のコードを使用して行います。 デプロイメント記述子を使用してアプリケーションを接続した場合は、 管理コンソールの「このアプリケーションのメッセージング・リソース」パネルを使用して、 インストールしたビジネス・アプリケーションを全体として表示したり、そのアプリケーションが使用している JMS リソースの構成を検査したりすることができます。

このパネルを使用すると多くの関連リソースを概観できるようになるため、問題の原因を見つけやすくなります。

Java Platform, Enterprise Edition (Java EE) クライアント・コンテナー内で実行されている JMS クライアント・アプリケーションが 、ConnectionFactory.createConnection メソッドの呼び出し時に失敗する

他の WebSphere Application Server プロセスを実行していないマシン上で、JMS クライアント・アプリケーションが Java EE クライアント・コンテナー内で実行されている場合に、ConnectionFactory.createConnection メソッドを呼び出すと、以下のエラーを出して失敗する場合があります。
CWSIJ0005E: An instance of the channel framework service to use for communication 
cannot be found.
原因

デフォルト・メッセージング・プロバイダーの ConnectionFactory に、チャネル・フレームワーク・サービスへの依存関係があります。これは、JNDI 名前空間での検索を使用して、チャネル・フレームワーク・サービスを見つけます。 ネーミング・サービスに接続するため、ConnectionFactory は、デフォルトのコンストラクターを使用して作成された InitialContext オブジェクトを使用します。

JMS クライアントがアプリケーション・サーバー環境で実行されている場合、InitialContext オブジェクトは ネーミング・サービスに正しく接続することができ、チャネル・フレームワーク・サービスが検出されて、createConnection の呼び出しは正常に完了します。

ただし、JMS クライアントが Java EE クライアント・コンテナー内で実行されている場合、InitialContext オブジェクトは java.naming.provider.url システム・プロパティーの値を使用して、接続するネーミング・サービスの位置を判別します。 このプロパティーに値が指定されていないと、ローカル・クライアント・マシンのポート 2809 にあるネーミング・サービスに接続を試みます。クライアント・マシンで実行中のサーバーが存在しない場合は、ローカル・マシンのこのポートで listen するネーミング・サービスはありません。このため、createConnection メソッドは失敗します。

解決方法
JMS クライアント・アプリケーションは、次のコード形式を使用してプログラムで java.naming.provider.url の値を指定できます。
String key = "java.naming.provider.url";
String value = "iiop://some.remote.machine:9810";
System.setProperty(key, value);

このコードは、ConnectionFactory オブジェクトで createConnection メソッドを呼び出す前に実行する必要があります。

あるいは、コマンド行から launchClient スクリプトを使用して Java EE クライアント・コンテナーを開始した場合、次のいずれかのコマンド行パラメーターを指定できます。
  • launchClient <CLIENT EAR> -CCBootstrapHost=some.remote.machine -CCBootstrapPort=981
  • launchClient <CLIENT EAR> -CCproviderURL=iiop://some.remote.machine:9810

これにより、プロバイダー URL がプログラムで指定されない場合でも、InitialContext オブジェクトはデフォルトで、コマンド行に指定されたプロバイダー URL を使用します。


トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjn_prob0
ファイル名:rjn_prob0.html