Interstage Application Server/Interstage Web Server トラブルシューティング集 |
目次
索引
![]() ![]() |
第8章 J2EEアプリケーション開発・運用時の異常 | > 8.12 Interstage JMSの異常時の対処 |
下表によくある問題とその対処方法を示します。
問題 |
主な原因 |
対処 |
---|---|---|
JNDI定義情報にTopicConnectionFactory、またはQueueConnectionFactoryが見つからない。 |
JNDIサブコンテキストが正しくない。 |
正しいJNDIサブコンテキストを使用しているか確認してください。 |
誤ったTopicConnectionFactory名、QueueConnectionFactory名が使用された。 |
すべての名前は大文字、小文字を区別します。 |
|
|
拡張システムでJMSアプリケーションを起動する場合は、Java(TM)VMのシステムプロパティ“com.fujitsu.interstage.isas.SystemName”に拡張システム名を設定する必要があります。javaコマンドの-Dオプションを使用して拡張システム名を設定してください。 |
|
JNDI定義情報にTopic、またはQueueが見つからない。 |
イベントチャネルが作成されていない。 |
esmkchnlコマンドを使用して、イベントチャネルが作成されているか確認してください。 |
JNDIサブコンテキストが正しくない。 |
正しいJNDIサブコンテキストを使用しているか確認してください。 |
|
誤ったTopic名、Queue名、チャネル名、グループ名が使用された。 |
すべての名前は大文字、小文字を区別します。 |
|
|
拡張システムでJMSアプリケーションを起動する場合は、Java(TM)VMのシステムプロパティ“com.fujitsu.interstage.isas.SystemName”に拡張システム名を設定する必要があります。javaコマンドの-Dオプションを使用して拡張システム名を設定してください。 |
|
JNDI名、クライアント識別子およびDurable Subscription名の制限。 |
使用可能な文字種は、アルファベット(大文字小文字ともに)、数字、ピリオド(.)、コロン(:)、アンダースコア(_)、ハイフン(-)、スラッシュ(/)です。スラッシュはJNDI名のアトミック名の区切り文字として認識されます。 |
正しい名前を使用してください。 |
SubscriberがSession.commit()またはMessage.acknowledge()などでメッセージの受信確認を行っているのに、イベントサービスのesmonitorコマンド画面でのQueueCountが減らない。 |
closeメソッドを呼ばずにSubscriberを終了した(アプリケーションの異常終了などを含む)可能性があります。
これにより、イベントチャネルにプロキシ(接続情報)が残ったため、イベントチャネルからデータが減らないということが考えられます。 Durable Subscription機能を使用していない場合、Subscriberを起動すると新しいプロキシを作成します。Subscriberがcloseメソッドを呼ばずに終了した場合、イベントチャネルにそのプロキシが残り、Subscriberを再起動しても新しいプロキシを作成するため、以前作成したプロキシは使用されません。使用されないプロキシ用にイベントチャネルはデータを保存し続けるため、再起動したSubscriberがメッセージの受信確認を行っても、イベントチャネルからデータの削除は行われません。そのため、esmonitorコマンド画面でのQueueCountが減らないという現象が起こります。 |
esmonitorコマンドを使用して、イベントチャネルの状態(ConsumerCount)を確認してください。 |
イベントサービスのesmonitorコマンドによりイベントチャネルにメッセージの蓄積が確認できる状態で、JMSアプリケーションを起動してもイベントチャネルからメッセージを受信できない。 |
Point-To-Pointメッセージングモデルにおいて、メッセージ受信のトランザクション処理中にアプリケーションが終了し、トランザクションタイムアウトまで受信中であったメッセージが配信されないことが考えられます。 |
“イベントサービス運用時の異常”の“アプリケーション運用中の異常”に記載されている“コンシューマアプリケーションの異常終了(接続情報を保存していない場合)”を参照してください。 |
NoClassDefFoundErrorが発生する。 |
動作環境の設定に誤りがあります。 |
必要な製品が正しくインストールされ、環境変数CLASSPATHが正しく設定されていることを確認してください。 |
javax.naming.NamingException: .GlobalTransactionMode nothingが発生する。 |
グローバルトランザクション機能を使用するための設定に誤りがあります。 |
JNDI環境プロパティcom.fujitsu.ObjectDirector.CORBA.GlobalTransactionModeにTrueが指定されていることを確認してください。 |
|
Interstage Application ServerがインストールしたJDK以外のJDKがインスールされているため、JMS運用コマンドが正常に動作しません。 |
以下のことを確認してください。
または、以下のディレクトリ(インストールパスはデフォルト)に格納されているJava環境設定ファイル(java_config)に使用するJavaのインストールディレクトリを設定後、JMS運用コマンドを実行してください。
設定形式 設定例 |
JMSException |
|
“メッセージ集”を参照して、ユーザの対処を実施してください。 |
Interstage管理コンソールの[サービス] > [JMS] > [イベントチャネル]で[イベントチャネル:状態]画面が表示できない(エラーメッセージ“es39996”または“es39999”が出力される)。 |
イベントチャネルグループ名に以下の使用可能な文字以外が含まれています。 |
Interstage管理コンソールを使用する場合は、esmonitorコマンドを使用してイベントチャネルグループ名を確認し、esrmchnlコマンドを使用して、該当するイベントチャネルを削除してください。 |
イベントチャネル名に以下の使用可能な文字以外が含まれています。 |
Interstage管理コンソールを使用する場合は、esmonitorコマンドを使用してイベントチャネル名を確認し、esrmchnlコマンドを使用して、該当するイベントチャネルを削除してください。 |
|
Interstage管理コンソールの[サービス] > [JMS] > [保存先]で[保存先:情報]画面が表示できない(エラーメッセージ“es39996”または“es39999”が出力される)。 |
格納ディレクトリに以下の使用禁止文字が含まれています。
|
Interstage管理コンソールを使用する場合は、ユニット作成時のユニット定義ファイルで格納ディレクトリを確認し、esrmunitコマンドを使用して、該当するユニットを削除してください。 |
Interstage管理コンソールの[サービス] > [JMS] > [ConnectionFactory]で[ConnectionFactory:一覧]画面が表示できない(エラーメッセージ“jms9997”が出力される)。 |
JNDI名に以下の使用禁止文字が含まれています。
|
Interstage管理コンソールを使用する場合は、jmsinfofactコマンドを使用してJNDI名およびクライアント識別子を確認し、jmsrmfactコマンドを使用して、該当するConnectionFactory定義を削除してください。 |
Interstage管理コンソールの[サービス] > [JMS] > [イベントチャネル] > [イベントチャネルグループ名::イベントチャネル名] > [Destination]で[Destination:一覧]画面が表示できない(エラーメッセージ“jms9997”が出力される)。 |
JNDI名に以下の使用禁止文字が含まれています。
|
Interstage管理コンソールを使用する場合は、jmsinfodstコマンドを使用してJNDI名、グループ名およびチャネル名を確認し、jmsrmdstコマンドを使用して、該当するDestination定義を削除してください。 |
JMS運用コマンドを使用して作成したDestination定義がInterstage管理コンソールに表示されない。 |
イベントチャネルが作成されていない。 |
Destination定義のグループ名、チャネル名に指定したイベントチャネルが作成されていることを確認してください。 |
誤ったチャネル名、グループ名が使用された。 |
jmsinfodstコマンドを使用して、イベントチャネルのグループ名、チャネル名を確認してください。 |
|
以下の状態であるにも関わらず、Message-driven Beanアプリケーションにおいてメッセージを受信できない。
|
ワークユニットの起動後、イベントチャネルが再起動された可能性があります。 |
Windows(R)システムの場合はイベントログ、Solarisシステムの場合はシステムログに、以下の順でメッセージが出力されている場合、ワークユニットを再起動してください。
|
以下のように操作した場合、イベントチャネルに格納したメッセージの順序で受信されない。
|
イベントチャネルのローカルトランザクション処理中に、ワークユニットを強制停止した場合、メッセージはローカルトランザクションのタイムアウト時間に達するまで受信できません。 |
ワークユニットを[停止(同期停止)]で停止してください。 |
Message-driven Beanを運用した場合、エラーメッセージ“od10965”が出力される。 |
イベントチャネルの最大接続数の設定値に、実際に運用中のサプライヤおよびコンシューマの合計値より小さい値が設定されています。 |
サプライヤおよびコンシューマが正しい運用状態であるかを確認してください。 |
JMS運用コマンドを使用して作成したDestination定義がInterstage管理コンソール上に表示されない。 |
他サーバのイベントチャネルに関連付けたDestinationを定義しました。 |
管理対象サーバのバージョンが8.0以前の場合、他サーバのイベントチャネルに関連付けたDestination定義は、Interstage管理コンソール上に表示されません。jmsinfodstコマンドを使用してDestination定義を確認してください。 |
イベントチャネルのメッセージ蓄積可能なデータ数の上限値を超過した場合、最初に格納されたメッセージが受信できない。 |
イベントチャネルのQosプロパティ項目“DiscardPolicy”が省略時の“FifoOrder”となっています。詳細については、“アプリケーション作成ガイド(イベントサービス編)”の“基礎知識”−“ノーティフィケーションサービスのプロパティ”−“Qosプロパティ”を参照してください。 |
Sender/Publishアプリケーションを実行する場合は、“-Dcom.fujitsu.interstage.jms.queue_max_err=yes”を指定して実行してください。 |
java.lang.ClassCastExceptionが発生する。 |
Interstage JMSで使用できないDestinationが指定されました。 |
アプリケーションにおいて、指定したDestinationに誤りがないかを確認してください。Destinationには、以下のいずれかの値を設定してください。
|
java.lang.ArrayIndexOutOfBoundsExceptionが発生する。 |
setJMSCorrelationIDAsBytesメソッドに指定された値に誤りがあります。 |
アプリケーションにおいて、setJMSCorrelationIDAsBytesメソッドに指定された値に誤りがないかを確認してください。 |
注1)ローカルトランザクションのタイムアウト時間は、以下を使用して確認してください。
注2)イベントチャネルの最大接続数は、以下を使用して確認してください。
目次
索引
![]() ![]() |