Interstage Application Server トラブルシューティング集
目次 索引 前ページ次ページ

第6章 J2EEアプリケーション開発・運用時の異常> 6.3 Interstage JMSの異常時の対処

6.3.4 よくある問題とその対処方法

 下表によくある問題とその対処方法を示します。

問題

主な原因

対処

JNDI定義情報にTopicConnectionFactory、またはQueueConnectionFactoryが見つからない。

JNDIサブコンテキストが正しくない。

正しいJNDIサブコンテキストを使用しているか確認してください。
JMSアプリケーションからJNDI名を参照する場合は「java:comp/env/jms/」を付加してください。

誤ったTopicConnectionFactory名、QueueConnectionFactory名が使用された。

すべての名前は大文字、小文字を区別します。
jmsinfofactコマンドを使用して、ConnectionFactory名を確認してください。


マルチシステム運用時に、拡張システム名が設定されていない。

拡張システムでJMSアプリケーションを起動する場合は、Java(TM)VMのシステムプロパティ“com.fujitsu.interstage.isas.SystemName”に拡張システム名を設定する必要があります。javaコマンドの-Dオプションを使用して拡張システム名を設定してください。

JNDI定義情報にTopic、またはQueueが見つからない。

イベントチャネルが作成されていない。

esmkchnlコマンドを使用して、イベントチャネルが作成されているか確認してください。
esmonitorコマンドにより、イベントチャネルが起動しているか確認してください。

JNDIサブコンテキストが正しくない。

正しいJNDIサブコンテキストを使用しているか確認してください。
JMSアプリケーションからJNDI名を参照する場合は「java:comp/env/jms/」を付加してください。

誤ったTopic名、Queue名、チャネル名、グループ名が使用された。

すべての名前は大文字、小文字を区別します。
jmsinfodstコマンドを使用して、Destination名を確認してください。また、イベントチャネル運用マシン上で指定したチャネル名、グループ名と同じか確認してください。


マルチシステム運用時に、拡張システム名が設定されていない。

拡張システムでJMSアプリケーションを起動する場合は、Java(TM)VMのシステムプロパティ“com.fujitsu.interstage.isas.SystemName”に拡張システム名を設定する必要があります。javaコマンドの-Dオプションを使用して拡張システム名を設定してください。

JNDI名、クライアント識別子およびDurable Subscription名の制限。

使用可能な文字種は、アルファベット(大文字小文字ともに)、数字、ピリオド(.)、コロン(:)、アンダースコア(_)、ハイフン(-)、スラッシュ(/)です。スラッシュはJNDI名のアトミック名の区切り文字として認識されます。
アトミック名およびクライアント識別子の先頭文字はアルファベット+数字のみ指定可能です。
指定可能な最大文字列長は255バイトです。ただし、JNDI名は「java:comp/env/jms/」より後ろが255バイト以下となります。

正しい名前を使用してください。

SubscriberがSession.commit()またはMessage.acknowledge()などでメッセージの受信確認を行っているのに、イベントサービスのesmonitorコマンド画面でのQueueCountが減らない。

closeメソッドを呼ばずにSubscriberを終了した(アプリケーションの異常終了などを含む)可能性があります。

  • Connection.close()
  • Session.close()
  • MessageConsumer.close()

これにより、イベントチャネルにプロキシ(接続情報)が残ったため、イベントチャネルからデータが減らないということが考えられます。

Durable Subscription機能を使用していない場合、Subscriberを起動すると新しいプロキシを作成します。Subscriberがcloseメソッドを呼ばずに終了した場合、イベントチャネルにそのプロキシが残り、Subscriberを再起動しても新しいプロキシを作成するため、以前作成したプロキシは使用されません。使用されないプロキシ用にイベントチャネルはデータを保存し続けるため、再起動したSubscriberがメッセージの受信確認を行っても、イベントチャネルからデータの削除は行われません。そのため、esmonitorコマンド画面でのQueueCountが減らないという現象が起こります。
Durable Subscription機能を使用している場合、Subscriber終了後、Subscriberを再起動すると、以前作成したプロキシを使用します。そのため、キューカウントが減らないという現象は起こりません。

esmonitorコマンドを使用して、イベントチャネルの状態(ConsumerCount)を確認してください。
プロキシの数が実際に運用するSubscriberの数より多い場合は、esstopchnl→esrmchnlを行い初期化してからesmkchnl→esstartchnlを行ってください。

イベントサービスのesmonitorコマンドによりイベントチャネルにメッセージの蓄積が確認できる状態で、JMSアプリケーションを起動してもイベントチャネルからメッセージを受信できない。

Point-To-Pointメッセージングモデルにおいて、メッセージ受信のトランザクション処理中にアプリケーションが終了し、トランザクションタイムアウトまで受信中であったメッセージが配信されないことが考えられます。

“イベントサービス運用時の異常”の“アプリケーション運用中の異常”に記載されている“コンシューマアプリケーションの異常終了(接続情報を保存していない場合)”を参照してください。

od60003の情報メッセージがシステムログに出力される。

メッセージがイベントチャネルにない場合に出力されることがあります。

Interstage Application Sever V5.0L10/ V5.0L10A/ V5.0L10B/5.0/5.0.1の場合:

本メッセージが出力されても、メッセージの受信に問題はありません。
本メッセージの抑止は、CORBAサービス動作環境のperiod_receive_timeout設定値、およびイベントサービス動作環境の-wtime設定値を大きくすることにより可能です。

Interstage Application Server V5.0L20/V5.0L20A/5.1/5.1.1の場合:

本メッセージが出力されても、メッセージの受信に問題はありません。
本メッセージの抑止は、JMSアプリケーション起動時に、システムプロパティを設定することにより可能です。
システムプロパティ名
 com.fujitsu.ObjectDirector.DeterredMessage
指定方法
 -Dcom.fujitsu.ObjectDirector.DeterredMessage=YES

NoClassDefFoundErrorが発生する。

動作環境の設定に誤りがあります。

必要な製品が正しくインストールされ、環境変数CLASSPATHが正しく設定されていることを確認してください。

javax.naming.NamingException: .GlobalTransactionMode nothingが発生する。

グローバルトランザクション機能を使用するための設定に誤りがあります。

JNDI環境プロパティcom.fujitsu.ObjectDirector.CORBA.GlobalTransactionModeにTrueが指定されていることを確認してください。

JMS運用コマンドを実行した場合に“Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion' has value '1.n', but '1.n' is required.”のメッセージがコンソールに出力される。
注)'1.n'はインストールされているJDKのバージョン

Interstage Java実行環境サーバパッケージ以外のJDKがインスールされているため、JMS運用コマンドが正常に動作しません。

Interstage Application Sever V5.0L10/ V5.0L10A/ V5.0L10Bの場合:

以下のことを確認してください。

  • Interstage Java実行環境サーバパッケージが正しくインストールされていることを確認してください。
  • JDKのパスが環境変数PATHに設定されていることを確認してください。

または、以下の手順でJMS運用コマンドを実行してください。
1) Interstage Java実行環境サーバパッケージ以外のJDKを使用しているアプリケーションを終了する。
2) Windows(R)のシステムフォルダ配下にあるjava.exeをシステムフォルダ以外に移動する。
3) JMS運用コマンドを実行する。
4) 2)で移動したjava.exeをシステムフォルダ配下に戻す。

Interstage Application Server V5.0L20/V5.0L20Aの場合:

以下のことを確認してください。

  • Interstage Java実行環境サーバパッケージが正しくインストールされていることを確認してください。
  • JDKのパスが環境変数PATHに設定されていることを確認してください。

または、以下のディレクトリ(インストールパスはデフォルト)に格納されているJava環境設定ファイル(java_config)に使用するJavaのインストールディレクトリを設定後、JMS運用コマンドを実行してください。

  • C:\Interstage\jms\bin

設定形式

 JDKDIR=javaのインストールディレクトリ(注)
 注)javaのインストールディレクトリは絶対パス形式で設定してください。

設定例

 C:\jdkにインストールしたJDKを使用する場合:
  JDKDIR=C:\jdk

JMSException

 

“メッセージ集”を参照して、ユーザの対処を実施してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006