メッセージングのトラブルシューティングのヒント
以下のヒントは、ご使用の WebSphere® メッセージング構成のトラブルシューティングに役立てることができます。
メッセージングの問題を特定および解決するために、WebSphere Application Server トレース機能とロギング機能を使用できます。
メッセージングの問題を特定および解決するために、WebSphere Application Server トレース機能とロギング機能を使用できます。これらの機能について詳しくは、『コンポーネント・トレース (CTRACE) の設定』を参照してください。
WebSphere Application Server のメッセージおよびログに IBM MQ のエラー・メッセージまたは理由コードがある場合は、IBM MQ インフォメーション・センターで『メッセージ』のセクションを参照してください。
『問題の診断および修正: 学習用リソース』のリンクを使用して、問題が特定され、文書化されているかどうかを確認してください。
- WebSphere MQ リソース・アダプター構成が自動的に更新されないため、手動での保守が必要になる
- フィックスパックのインストール時に java.lang.ClassNotFoundException 例外が発生する
- WebSphere MQ for z/OS からのメッセージは JMS アプリケーションによって消費されない
- JMS アプリケーションがメッセージを送受信できなくなった
- MDB リスナーが始動に失敗する
- セキュリティーを使用可能にして JMS アプリケーションを実行する際の問題
Solaris で zh_TW.EUC ロケールが設定されている場合にアプリケーション・サーバーが開始しない
- JMS メッセージ処理中のサーバー・メモリー使用量および java.lang.OutOfMemoryError 例外
- TopicConnectionFactory attributes clash エラー
- 「WSEC5061E: SOAP 本文に署名がありません。」例外
- IBM MQ を外部 JMS プロバイダーとして使用するとエラーが発生する
javax.jms.JMSException: MQJMS3024: unable to start MDB listener
サーバー始動時に WebSphere MQ メッセージング・プロバイダーのチャネル・フレームワーク・メッセージが表示される
WebSphere MQ リソース・アダプター構成が自動的に更新されないため、手動での保守が必要になる
通常、WebSphere Application Server のフィックスパックを適用すると、IBM MQ リソース・アダプターは自動的に更新されます。ただし、ご使用の環境内にある一部のノードで IBM MQ リソース・アダプターを手動で更新していた場合、フィックスパックを適用しても、それらのノードのサーバーで使用されるリソース・アダプターは自動的に更新されません。
この問題を解決するには、IBM MQ リソース・アダプターの保守を参照してください。
フィックスパックのインストール時に java.lang.ClassNotFoundException 例外が発生する
J2CA0043E: An exception occurred while trying to instantiate a ResourceAdapter
JavaBean instance for the installed ResourceAdapter defined by key #removed#
WebSphere MQ for z/OS からのメッセージは JMS アプリケーションによって消費されない
WebSphere Application Server にデプロイされている JMS アプリケーション、および接続ファクトリーまたはアクティベーション・スペックを使用している JMS アプリケーションが、WebSphere MQ for z/OS からのメッセージを消費しない
JMS アプリケーションがメッセージを送受信できなくなった
- Java™ Message Service (JMS) のアクティベーション・スペックを使用して接続する 1 つ以上のメッセージ Bean。
- JMS 接続ファクトリーおよび JMS 宛先を使用して接続されている 1 つ以上のエンタープライズ Bean。
- 特定のアプリケーションの JMS リソースを表示するには、このアプリケーションのメッセージング・リソースのパネルを参照してください。
- 特定のデフォルト・メッセージング・プロバイダーの宛先のアプリケーションおよび JMS リソースを表示するには、この宛先のアプリケーション・リソースのパネルを参照してください。
MDB リスナーが始動に失敗する
WMSG0019E: MDB Listener {0}、JMSDestination {1} を開始できません: {2}
- 管理リソースが正しく構成されていることを確認します。 例えば、管理コンソールを使用してリスナー・ポート・プロパティーの、 宛先 JNDI 名および接続ファクトリー JNDI 名を確認します。リスナー・ポート、宛先、および接続ファクトリーの他のプロパティーが正しいことを確認します。
- キューが存在して JMS サーバーに追加済みであることを確認します。
- キュー・マネージャーおよび JMS サーバーが始動済みであることを確認します。
- リモート・キュー・マネージャー・リスナーが始動済みであることを確認します。
セキュリティーが使用可能である場合は、コンポーネント管理認証別名が、メッセージ駆動型 Bean によって使用されるキュー接続ファクトリーま たはトピック接続ファクトリーに対して指定済みであることを確認します。
セキュリティーが使用可能である場合は、MDB リスナーの始動に使用されるユーザー ID が適切に許可されていることを確認します。 詳しくは、セキュリティーを使用可能にして JMS アプリケーションを実行する際の問題を参照してください。
セキュリティーを使用可能にして JMS アプリケーションを実行する際の問題
WMSG0019E: Unable to start MDB Listener PSSampleMDB, JMSDestination Sample/JMS/listen :
javax.jms.JMSSecurityException:
この例は、提供されたセキュリティー・クレデンシャルが無効であることを示しています。- 認証メカニズムが「Application」に設定されている場合は、 アプリケーションによって有効なクレデンシャルを提供する必要があります。
- 認証メカニズムが「Container」に設定されている場合は、コンテナー管理認証別名を持つ JMS 接続ファクトリーを構成して、関連したユーザー ID およびパスワードが有効になるようにする必要があります。
あるいは、bindings トランスポート・モードで実行している場合は、コネクター・スレッド ID サポートを使用することもできます。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
MQJMS2013 invalid security authentication supplied for MQQueueManager:
IBM MQ を JMS プロバイダーとして使用し、JMS 接続でバインディング・トランスポート・モードを使用していて、指定されたユーザーが WebSphere Application Server プロセスの現在のログオン・ユーザーでない場合は IBM MQ による JMS バインディング認証によって、セキュリティー認証無効エラーが生成されます。- セキュリティー・クレデンシャルを使用する。これを選択するには、WebSphere Application Server プロセスの現行ログオン・ユーザーをユーザーとして指定する必要があります。
- セキュリティー資格認定を使用しない。IBM MQ 接続ファクトリーで、「コンポーネント管理認証別名」プロパティーと「コンテナー管理認証別名」プロパティーが設定されていないことを確認してください。
メッセージング・セキュリティーについて詳しくは、 メッセージングの保護を参照してください。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
Solaris で zh_TW.EUC ロケールが設定されている場合にアプリケーション・サーバーが開始しない
Solaris で、ロケールを zh_TW.EUC に設定し、JMS プロバイダーとして IBM MQ を使用する場合、アプリケーション・サーバーが開始しないことがあります。
この問題を解決するには、LANG および LC_ALL 変数を zh_TW に設定してください。
JMS メッセージ処理中のサーバー・メモリー使用量および java.lang.OutOfMemoryError 例外
デフォルト・メッセージング・プロバイダーを使用する場合、JMS メッセージはアプリケーション・サーバー・プロセス内のメッセージング・エンジンによって処理されます。 このアプローチでは、アプリケーション・サーバーの JVM ヒープのメモリーが消費されます。大規模なメッセージが並行して処理されていて、JVM ヒープで使用できるメモリーの量がこのイベントを処理するために十分でない場合、java.lang.OutOfMemoryError 例外がスローされ、アプリケーション・サーバーは終了します。
- メッセージを並行処理するメッセージ駆動型 Bean をデプロイするときに、並行エンドポイントによるアプリケーション・サーバーのメモリーの潜在的な使用量を見積もる必要があります。 メッセージ要求を並行処理している各エンドポイントは、少なくともメッセージ・サイズの 2 倍をサーバーの JVM ヒープに追加し、特に 2 フェーズ・トランザクションが行われる場合は、それ以上を追加することができます。
- WebSphere Application Server 管理コンソールを開始します。
- 「初期ヒープ・サイズ」プロパティーと「最大ヒープ・サイズ」プロパティーを設定して、アプリケーション・サーバーの JVM ヒープで使用できるメモリーの量を構成します。 とナビゲートし、
- 「最大並行エンドポイント数プロパティーを設定して、メッセージを処理可能な並行 MDB エンドポイントの数を構成します。 とナビゲートし、このメッセージ駆動型 Bean 用のアクティベーション・スペックの
TopicConnectionFactory attributes clash エラー
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 トピック接続ファクトリーの構成で、ブローカー・バージョンとして「基本」が指定され、メッセージ選択値として「ブローカー」が指定されている場合に発生します。「基本」の IBM MQ ブローカー (MA0C SupportPac ブローカー) では、「ブローカー」メッセージ選択はサポートされません。
この問題を解決するには、JMS トピック接続ファクトリーを変更してメッセージ選択値「クライアント」を指定します。これが、 IBM MQ 基本ブローカー (MA0C SupportPac ブローカー) でサポートされる唯一の値です。
「WSEC5061E: SOAP 本文に署名がありません。」例外
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5061E: The SOAP Body is not signed.; null
- Web Services Security を使用して構成された Web サービス・アプリケーションが、WebSphere Application Server セキュリティーが使用可能になっているアプリケーション・サーバーで実行されている。
- この Web サービス・アプリケーションが、JMS トランスポートを使用して SOAP 要求をターゲット Web サービスに送信する。
- JMS リソースがリモート IBM MQ サーバーを使用して IBM MQ キューに接続する。
- 同じ IBM MQ サーバーを介して同じキューを使用するように構成された、もう 1 つの同じ Web サービス・アプリケーションが、WebSphere Application Server セキュリティーが使用可能になっていない別のアプリケーション・サーバーで実行されている。
この問題は、元のアプリケーションから送信される要求が同じキューを経由するが、 セキュリティーが使用可能になっていない別のアプリケーション・サーバーに送られる場合に発生します。
- IBM MQ サーバーで、固有のポートを使用する固有のキュー・マネージャーを作成します。
- 新規キュー・マネージャーとポートを使用するように、JMS リソースを再構成します。例えば、IBM MQ メッセージング・プロバイダーのキュー接続ファクトリーの構成の説明に従って、WebSphere Application Server 管理コンソールを使用し、IBM MQ キュー接続ファクトリーのプロパティーを変更します。
- アプリケーションを再実行します。
IBM MQ を外部 JMS プロバイダーとして使用するとエラーが発生する
IBM MQ を外部 JMS プロバイダーとして使用し、ユーザー管理トランザクション内でメッセージを IBM MQ キューに送信する場合、トランザクションがコミットする前にメッセージが宛先キューに到着する場合があります。この問題は、IBM MQ リソース・マネージャーがユーザー管理トランザクションに含まれていない場合に発生します。
この問題を解決するには、コンテナー管理トランザクションを使用してください。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
javax.jms.JMSException: MQJMS3024: unable to start MDB listener
- jmsadmin ツールを使用して、クライアント ID を tcf のプロパティーとして設定する。例えば、tcf(myTCF) clientid(myID) を変更します。
- TopicConnection.setClientID() を使用して、クライアント ID をプログラマチックに設定する。
- 管理コンソールを使用して IBM MQ メッセージング・プロバイダーのトピック接続ファクトリー設定 を変更して、クライアント ID フィールドを管理的手法で設定する。
![[z/OS]](../images/ngzos.gif)
サーバー始動時に WebSphere MQ メッセージング・プロバイダーのチャネル・フレームワーク・メッセージが表示される
後続の再試行で接続が成功する場合でも、サーバー開始時に、制御領域従属プロセス中に以下のメッセージが数回表示される ことがあります。このメッセージは、 z/OS TCP プロキシー・チャネル が非同期に開始することが原因で発行され、エラーが発生したことを示しているのではありません。
Trace: 2009/06/17 08:24:41.434 01 t=9C6B58 c=UNK key=P8 (00000011)
Description: Log Java Message
Message: CHFW0030E: Error starting chain _InboundTCPProxyBridgeService because
of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException:
An exception was thrown when attempting to start the TCPProxyChannel
com.ibm.ws.channel.framework.imp l.ChannelFrameworkImpl
これらのメッセージには、以下の例に似た First Failure
Data Capture (FFDC) 出力が伴う場合があります。Exception = com.ibm.wsspi.channel.framework.exception.RetryableChannelException
Source = com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal
probeid = 2577
Stack Dump = com.ibm.wsspi.channel.framework.exception.RetryableChannelException:
An exception was thrown when attempting to start the TCPProxyChannel
at com.ibm.ws.tcpchannelproxy.jfap.impl.TCPProxyInboundChannel.start(TCPProxyInboundChannel.java:153)
at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChannelInChain(ChannelFrameworkImpl.java:1410)
at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal(ChannelFrameworkImpl.java:2863)
at com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl.startChainInternal(WSChannelFrameworkImpl.java:960)
at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal(ChannelFrameworkImpl.java:2794)
at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChain(ChannelFrameworkImpl.java:2779)
at com.ibm.ws.runtime.component.ChannelFrameworkServiceImpl.startChain(ChannelFrameworkServiceImpl.java:666)
at com.ibm.ws.sib.jfapchannel.framework.impl.ChannelFrameworkReference$TCPProxy
BridgeServiceInboundChainStartupRunnable.run(ChannelFrameworkReference.java:1641)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
Caused by: com.ibm.ws.tcpchannelproxy.jfap.NotYetInitializedException: Server is not yet initialized
at com.ibm.ws.tcpchannelproxy.jfap.TCPProxyBridgeServicesImpl.startListening(TCPProxyBridgeServicesImpl.java:558)
at com.ibm.ws.tcpchannelproxy.jfap.impl.TCPProxyInboundChannel.start(TCPProxyInboundChannel.java:131)
... 8 more
Trace: 2009/06/17 08:24:51.449 01 t=9C6B58 c=UNK key=P8 (13007002)
ThreadId: 00000003
FunctionName: com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl
SourceId: com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl
Category: AUDIT
ExtendedMessage: BBOO0222I: CHFW0019I: The Transport Channel Service has started
chain _InboundTCPProxyBridgeService.