これらのヒントには、問題が発生したシナリオの説明、問題の原因と考えられること、および推奨される解決法が含まれます。
類似した問題が見つからない場合、 または提供されている情報では問題が解決されない場合は 、メッセージング・コンポーネントのトラブルシューティングのヒント を参照してください。
WebSphere MQ のエラー・メッセージや理由コードが、WebSphere Application Server のメッセージ およびログに表示される場合、WebSphere MQ メッセージ資料 (http://publibfi.boulder.ibm.com/epubs/pdf/amqzao05.pdf) を参照してください。
それでも問題が解決できない場合は、IBM からのトラブルシューティングのヘルプ を参照してください。
WMSG0019E: MDB Listener {0}、JMSDestination {1} を開始できません: {2}
セキュリティーを使用可能にして JMS アプリケーションを実行しようとする際に、 以下のエラー・メッセージで表されるような、 認証の問題が発生することがあります。 例: WMSG0019E: MDB Listener PSSampleMDB、JMSDestination Sample/JMS/listen を開始できません: javax.jms.JMSSecurityException: (提供されたセキュリティー・クレデンシャルが無効であることを示しています。)
メッセージング・セキュリティーについて詳しくは、 非同期メッセージング - セキュリティーの考慮事項 を参照してください。
Redhat Linux でアプリケーション・サーバーを停止しようとすると、 キュー・マネージャーは Java コア・ダンプを生成して停止し、SystemOut.log ファイルの最後に、 「Stopping Queue manager...」というメッセージが記述される場合があります。
これは RedHat に関する既知の問題 (https://bugzilla.linux.ibm.com/show_bug.cgi?id=2336) によって発生したものであり、libstdc++-2.96-116.7.2 以降で発生します。
これを避けるには、libstdc++-2.96-108.1 レベルに 戻る必要があります。
Solaris で zh_TW.EUC にロケールを設定し、JMS プロバイダーとして WebSphere MQ を使用する場合、 アプリケーション・サーバーが開始しないという問題が発生することがありま す。
Solaris での JMS プロバイダーとして WebSphere MQ を 使用する予定であれば、アプリケーション・サーバー始動時の問題を回避するために、LANG 変数と LC_ALL 変数 は zh_TW.EUC (中国語 (繁体字) ロケール) に設定しないようにしてください。 LANG および LC_ALL 変数は、zh_TW.EUC ではなく zh_TW に設定してください。
デフォルトの JMS プロバイダーを使用する JMS メッセージ集中処理 (例えば、大容量メッセージの重大な並行処理) は、java.lang.OutOfMemoryError 例外の原因となり、またアプリケーション・サーバーを強制終了させる可能性があります。
デフォルトのプロバイダーによる JMS メッセージの処理は、アプリケーション・サーバー・プロセス内のメッセージング・エンジンによって実行されるため、アプリケーション・サーバーの JVM ヒープからメモリーを消費します。 これは、組み込み JMS プロバイダーのサポートが分離したプロセス内で実行されるバージョン 5 とは対照的です。
アプリケーション・サーバーの JVM ヒープのための使用可能なメモリー量が、メッセージおよびメッセージ・サイズの並行プロデューサーまたはコンシューマーの数の影響を取り扱うのに十分な容量で構成されていなかった場合、java.lang.OutOfMemoryError 例外がスローされて、アプリケーション・サーバーは強制終了します。
ソリューション: デフォルトのメッセージング・プロバイダーを使用して JMS メッセージを処理するアプリケーションをデプロイする準備をするとき、メッセージ処理のためのアプリケーション・サーバーのメモリーの潜在的な使用量を予想しなければなりません。 並行プロセッサーの潜在的な数またはメッセージおよびメッセージ・サイズのコンシューマーを考慮して、それから影響を取り扱うアプリケーション・サーバーの JVM ヒープのサイズを設定しなければなりません。
例えば、メッセージを並行処理するために使用されるべきメッセージ駆動型 Bean をデプロイする準備をするとき、並行エンドポイントによるアプリケーション・サーバーのメモリーの潜在的な使用量を予想しなければなりません。 メッセージ要求を並行処理している各エンドポイントは、少なくとも 2 回、メッセージ・サイズをサーバーの JVM ヒープに追加し、特に 2 相トランザクションが適所にある場合は、それ以上追加することができます。
アプリケーション・サーバーの初期ヒープ・サイズおよび最大ヒープ・サイズ・プロパティーを設定することによって、アプリケーション・サーバーの JVM ヒープに使用可能なメモリーの量を構成することができます。 例えば、WebSphere Application Server 管理コンソール・パネル上で、
「server_name」 と選択します。メッセージ駆動型 Bean をデプロイするために使用されるアクティベーション・スペックの最大並行エンドポイント数プロパティーを設定することによって、メッセージを処理することができる並行 MDB エンドポイントの数を構成することができます。 例えば、WebSphere Application Server 管理コンソール・パネル上で、
「activationspec_name」 と選択します。"WSVR0017E: Error encountered binding the J2EE resource, TopicConnectionFactory, as <JNDI_NAME> from file:<RESOURCES_FILE> com.ibm.ws.runtime.component.binder.ResourceBindingException: invalid configuration passed to resource binding logic. REASON: Failed to create connection factory: Error raised constructing AdminObject, error code: TopicConnectionFactory attributes clash : TopicConnectionFactory attributes clash"
この問題は、サブスクライバーを作成するために使用された JMS トピック接続ファクトリーの構成によって生じ、これは「基本」のバージョンおよび「ブローカー」のメッセージ選択値を指定します。 「基本」WebSphere MQ ブローカー (MA0C SupportPac ブローカー) は、「ブローカー」メッセージ選択をサポートしません。
ソリューション: JMS トピック接続ファクトリーを変更して「クライアント」のメッセージ選択値を指定します。これは WebSphere MQ 基本ブローカー (MA0C SupportPac ブローカー) のために唯一サポートされた値です。
[9/7/04 12:10:02:895 GMT-06:00] 00000039 enterprise I TRAS0014I: The following exception was logged WebServicesFault faultCode: {http://schemas.xmlsoap.org/ws/2003/06/secext}FailedCheck faultString: WSEC5061E: The SOAP Body is not signed.; null faultActor: null faultDetail: stackTrace: com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5061E: The SOAP Body is not signed.; null ...
問題のシナリオでは、WebSphere グローバル・セキュリティーが使用可能になっています。 その場合、Web サービス・セキュリティーを使用して構成された Web サービス・アプリケーションが、 JMS トランスポートを使用してターゲット Web サービスに SOAP 要求を送信しようとしても、 失敗します。JMS リソースは、リモート WebSphere MQ サーバーを使用して、 WebSphere MQ で構成されています。キュー・マネージャーは、この WebSphere MQ サーバー上にあります。
この問題の原因は、同一のアプリケーションが別のアプリケーション・サーバーからも実行され、 しかも同じ WebSphere MQ サーバー内で同じキュー・マネージャーとキュー名を使用しているためです。元のアプリケーションから送信された要求は、同じキューを介して、 グローバル・セキュリティーが使用可能になっていない可能性のある別のアプリケーション・サーバーに対して 処理されます。
新しいキュー・マネージャーと ポートを使用するように、JMS リソースを再構成します。 例えば、WebSphere Application Server 管理コンソールを 使用して、WebSphere MQ キュー接続ファクトリーの プロパティーを変更してください。 詳しくは、WebSphere MQ 用 JMS キュー接続ファクトリーの構成 を参照してください。
com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. Root exception is com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. Root exception is javax.jms.JMSException: MQJMS1006: invalid value for tempQPrefix:
原因: アプリケーション・クライアントが WebSphere MQ JMS クライアント CSD 04 JAR ファイルを使用中です。WebSphere Application Server バージョン 6 は、tempQprefix をブランクに設定するため、 メソッド setTempqPrefix の CSD 04 リリースではこれを処理できません。
解決策 アプリケーション・クライアントが WebSphere 組み込みメッセージング JAR ファイルを使用する場合は、 WebSphere Application Server V5.1 用 WebSphere 組み込みメッセージングの暫定修正を適用してください。 クライアントが外部 WebSphere MQ JMS クライアントの JAR ファイルを使用する場合は、 CSD05 を適用します。
WebSphere MQ を外部 JMS プロバイダーとして使用する場合、 ユーザー管理トランザクション内で送信されるメッセージは、トランザクションがコミットする前に 到着する場合があります。これが起こるのは、WebSphere MQ を外部 JMS プロバイダーとして使用し、 ユーザー管理トランザクション内でメッセージを WebSphere MQ キューに送信する場合だけです。 メッセージは、トランザクションがコミットする前に宛先キューに到着します。
この問題の原因は、WebSphere MQ リソース・マネージャーがユーザー管理トランザクション内で確立されていないことです。
この問題は、コンテナー管理トランザクションを使用すると解決します。
メッセージング・エンジンが始動を試みると、ログに以下のメッセージが表示されます。
CWSIS0002E: メッセージ・エンジンは、開始中に例外を検出しました。 例外: com.ibm.ws.sib.msgstore.PersistenceException: CWSIS1501E: The data source has produced an unexpected exception: java.sql.SQLException: <dbname> DSRA0010E: SQL State = 2E000, Error Code = -1,001DSR A0010E: SQL State = 2E000, Error Code = -1,001
原因: メッセージング・エンジンのデータベースが見つかりませんでした。
解決策: メッセージング・エンジン上のデータベース名が正確であることを確認し、データベースが作成されていることを確認します。
このエラーは、MQ キュー名が、内部 Java Message Service (JMS) サーバーのキュー名リストで定義されていない場合に発生することがあります。 また、キュー名を内部 JMS サーバーのキュー名リストに追加せずに 、WebSphere Application Server のキュー宛先を作成した場合にも、発生する可能性があります。