WebSphere Application Server Network Deployment for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

アプリケーション・クライアントのトラブルシューティングのヒント

このトピックでは、 Java 2 Platform Enterprise Edition (J2EE) アプリケーション・クライアントの共通の問題を解決するためのデバッグに関するヒントを記載します。 このトラブルシューティング・ガイドを使用するには、 J2EE アプリケーション・クライアントの例外の 1 つのトレース項目を検討し、次にガイドの中でその例外を見つけます。

ガイドの中のエラーの一部はサンプルです。 実際に受け取るエラーは、ここに示されているものとは異なる場合があります。 また、-CCverbose=true オプションを指定して launchClient コマンドを再実行することも有効です。 このオプションは、J2EE アプリケーション・クライアント・ランタイムが初期化されるときに追加情報を提供します。

エラー: java.lang.NoClassDefFoundError

説明 この例外は、指定されたクラスを Java コードがロードできない場合にスローされます。
考えられる原因
  • 無効または存在しないクラス
  • クラスパスの問題
  • マニフェストの問題
推奨される対応 指定されたクラスがエンタープライズ・アーカイブ (EAR) ファイル内の Java アーカイブ (JAR) ファイルに存在しているかどうかを確認します。 存在する場合には、そのクラスのパスが正しいことを確認します。 例えば、次のような例外を受け取った場合、
java.lang.NoClassDefFoundError:
WebSphereSamples.HelloEJB.HelloHome
EAR ファイル内の JAR ファイルの 1 つに HelloHome クラスが存在することを確かめます。 存在する場合には、そのクラスのパスが WebSphereSamples.HelloEJB であることを確かめます。
クラスとパスが両方とも正しい場合には、例外はクラスパスの問題です。 おそらく、クライアントの JAR ファイルのマニフェストの中に指定される、 障害のあるクラスの JAR ファイルがありません。 これを検証するには、以下のステップを実行します。
  1. アセンブリー・ツールを用いて EAR ファイルを開き、「アプリケーション・クライアント」を選択します。
  2. EAR ファイル内の他の JAR ファイルの名前を Classpath フィールドに追加します。
この例外は、一般に、 Classpath フィールドに Enterprise Java Beans (EJB) モジュール名が欠如していることから起こります。

Classpath フィールドに複数の JAR ファイルを入力する場合には、 JAR 名の間をスペースで分離するようにしてください。

それでも問題が解決しない場合は、 クラスが、EAR ファイルではなく、ファイル・システムからロードされた可能性があります。 問題のクラスが例外に指定されているクラスではないため、 このエラーをデバッグすることは困難です。 あるいは、例外に指定されているクラスより前に、別のクラスがファイル・システムからロードされました。 このエラーを訂正するには、-CCclasspath オプションで指定されたクラスパ ス、およびアプリケーション・クライアント・リソース構成ツールで構成されたクラスパスを調べます。

EAR ファイルにも存在するクラスを探します。 .ear ファイルでなく、ファイル・システム上でクラスの 1 つが検出された状況を解決する必要があります。 クラスパスから項目を除去するか、 あるいは .jar ファイルおよびクラスを、ファイル・システムから参照するのではなく、.ear ファイルに組み込みます。

ツールで -CCclasspath パラメーターまたは リソース・クラスパスを使用し、複数の JAR ファイルまたはクラスを構成し ている場合には、ご使用のオペレーティング・システム用の正しい区切り文字 が使用されていることを確かめてください。 Classpath フィールドとは違って、これらのクラスパス・フィールドはプラ ットフォーム固有の区切り文字を使用します。

ヒント: launchClient バッチ・ファイルまたはシェル・ファイルを使用する場合、 システム・クラスパスは、アプリケーション・クライアント・ランタイムによって使用されません。 この場合には、システム・クラスパスはこの問題を起こしません。 しかし、launchClient クラスを直接ロードする場合には、 システム・クラスパスも探す必要があります。

エラー: com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while attempting to get an instance of the object for the specified reference object.[Root exception is javax.naming.NameNotFoundException: xxxxxxxxxx]

説明 ホスト・サーバー上にインストールされていないオブジェクトの検索を実行すると、この例外が発生します。 ユーザーのプログラムはローカル・クライアント Java Naming and Directory Interface (JNDI) のネーム・スペースでその名前をルックアップすることができますが、 それはホスト・サーバーにはないので NameNotFoundException 例外を受け取りました。 1 つの代表的な例は、 アクセスするホスト・サーバーにインストールされていない EJB コンポーネントを検索するというものです。 この例外は、アプリケーション・クライアント・モジュールに構成した JNDI 名が、 ホスト・サーバー上のリソースの実際の JNDI 名と一致しない場合にも起こります。
考えられる原因
  • 間違ったホスト・サーバーが起動された
  • リソースが定義されていない
  • リソースがインストールされていない
  • アプリケーション・サーバーが開始されていない
  • 無効な JNDI 構成
推奨される対応 間違ったホスト・サーバーにアクセスしている場合は、 正しいホスト・サーバー名を指定する -CCBootstrapHost パラメーターを用いて、 launchClient コマンドを再度実行します。 正しいホスト・サーバーにアクセスしている場合には、 製品の dumpnamespace コマンド行ツールを使用して、 ホスト・サーバーの JNDI ネーム・スペースのリストを参照します。 障害を起こしたオブジェクトの名前が見つからない場合には、 リソースがホスト・サーバーにインストールされていないか、 あるいは適切なアプリケーション・サーバーが開始されていないかのどちらかです。 リソースがすでにインストールされており開始されていることが判明した場合には、 クライアント・アプリケーション内の JNDI 名がホスト・サーバー上のグローバル JNDI 名と一致しません。 Application Server Toolkit を使用して、 クライアント・アプリケーション内の障害を起こしたオブジェクト名の JNDI バインディング値を ホスト・サーバー・アプリケーション内のオブジェクトの JNDI バインディング値と比較します。 これらの値は一致しなければなりません。

エラー: javax.naming.ServiceUnavailableException: A communication failure occurred while attempting to obtain an initial context using the provider url: "iiop://[invalidhostname]". Make sure that the host and port information is correct and that the server identified by the provider URL is a running name server. If no port number is specified, the default port number 2809 is used. Other possible causes include the network environment or workstation network configuration. Root exception is org.omg.CORBA.INTERNAL: JORB0050E: In Profile.getIPAddress(), InetAddress.getByName[invalidhostname] threw an UnknownHostException. minor code: 4942F5B6 completed: Maybe

説明 この例外は、無効なホスト・サーバー名を指定すると発生します。
考えられる原因
  • 間違ったホスト・サーバーが起動された
  • 無効なホスト・サーバー名
推奨される対応 launchClient コマンドを再度実行し、-CCBootstrapHost パラメーターを用いて、 ホスト・サーバーの正しい名前を指定します。

エラー: javax.naming.CommunicationException: Could not obtain an initial context due to a communication failure. Since no provider URL was specified, either the bootrap host and port of an existing ORB was used, or a new ORB instance was created and initialized with the default bootstrap host of "localhost" and the default bootstrap port of 2809. Make sure the ORB bootstrap host and port resolve to a running name server. Root exception is org.omg.CORBA.COMM_FAILURE: WRITE_ERROR_SEND_1 minor code: 49421050 completed: No

説明 この例外は、 始動済みアプリケーション・サーバーを持たないホスト・サーバーに対して launchClient コマンドを実行すると発生します。 この例外は、無効なホスト・サーバー名を指定した場合にも起こります。 これは、launchClient ツールを実行するときにホスト・サーバー名を指定しないと起こることがあります。 WebSphere Application Server はユーザーのホスト・サーバーの名前を知らないので、 デフォルトの振る舞いでは、launchClient ツールがローカル・ホストを対象として実行することになります。 このデフォルトの振る舞いは、 WebSphere Application Server がインストールされているマシン上でクライアントを実行させている場合にのみ動作します。
考えられる原因
  • 間違ったホスト・サーバーが起動された
  • 無効なホスト・サーバー名
  • localhost への無効な参照
  • アプリケーション・サーバーが開始されていない
  • 無効なブートストラップ・ポート
推奨される対応 正しいホスト・サーバーに対して実行していない場合は、launchClient コマンドを再度実行し、 -CCBootstrapHost パラメーターを使ってホスト・サーバーの名前を指定します。 そうでなければ、ホスト・サーバー上の Application Server を開始して、 launchClient コマンドを再実行します。

エラー: javax.naming.NameNotFoundException: Name comp/env/ejb not found in context "java:"

説明 この例外は、指定された名前を Java コードがローカル JNDI ネーム・スペース内で見つけられない場合にスローされます。
考えられる原因
  • 指定された名前にバインディング情報がない
  • 指定された名前のバインディング情報が間違っている
  • プログラムのクラスの 1 つをロードするのに、間違ったクラス・ローダーが使用された
  • リソース参照に、クライアント構成情報が含まれていない
  • デプロイメント・マネージャー上のクライアント・コンテナーが (サポートされていない) エンタープライズ拡張機能を使用しようとしています
推奨される対応

Application Server Toolkit を用いて EAR ファイルを開き、 障害の原因となっている名前に対するバインディングを検査します。 この情報が正しいことを確かめます。 リソース参照を使用している場合には、 アプリケーション・クライアント・リソース構成ツールを用いて EAR ファイルをオープンし、 リソース参照にクライアント構成情報があること、 およびリソース参照の名前とクライアント構成の JNDI 名が完全に一致することを確認してください。 この値が正しい場合には、クラス・ローダー・エラーがあることが考えられます。

エラー: java.lang.ClassCastException: Unable to load class: org.omg.stub.WebSphereSamples.HelloEJB._HelloHome_Stub at com.ibm.rmi.javax.rmi.PortableRemoteObject.narrow(portableRemoteObject.java:269)

説明 この例外は、 アプリケーション・プログラムが EJB のホーム・クラスに対して絞り込みを試み、 クラス・ローダーが EJB のクライアント・サイド・バインディングを検出できない場合に発生します。
考えられる原因
  • *_Stub.class ファイルおよび _Tie.class ファイルが EJB .jar ファイル内にない
  • クラス・ローダーがクラスを検出できなかった
推奨される対応 .ear ファイル内に配置されている EJB .jar ファイルを調べて、 クラスが Enterprise Java Beans (EJB) クライアント・サイド・バインディングを含んでいるかどうか検査します。 これらのファイルは、 名前が _Stub および _Tie で終わるクラス・ファイルです。 バインディング・クラスが EJB .jar ファイルにある場合には、 クラス・ローダー・エラーが生じることがあります。

エラー: WSCL0210E: Enterprise アーカイブ・ファイル [EAR file name] が見付かりません。com.ibm.websphere.client.applicationclient.ClientContainerException: com.ibm.etools.archive.exception.OpenFailureException

説明 このエラーは、 アプリケーション・クライアント・ランタイムがエンタープライズ・アーカイブ (EAR) ファイルを読み取れないときに起こります。
考えられる原因 このエラーの原因として最も可能性が高いのは、 launchClient コマンドで指定されたパスに EAR ファイルが見つからないことです。
推奨される対応 launchclient コマンドで指定したパスとファイル名が正しいことを確認してください。

launchClient コマンドが停止している可能性があり、 クライアント・アプリケーションが終了してもコマンド行に戻らない。

説明 launchClient コマンドを使用してアプリケーション・クライアントを実行していると、 WebSphere Application Server ランタイムが、セキュリティー・ログイン・ダイアログの表示を必要とする場合があります。 このダイアログを表示するために、 WebSphere Application Server ランタイムは Abstract Window Toolkit (AWT) スレッドを作成します。 アプリケーションが、その main メソッドからアプリケーション・クライアント・ランタイムに戻されるときに、 アプリケーション・クライアント・ランタイムは、オペレーティング・システムへのリターンを試み、 Java 仮想マシンを終了します。 しかし、AWT スレッドがあるので、 JVM コードは、System.exit が呼び出されるまでは終了しません。
考えられる原因 AWT スレッドがあるために、JVM コードが終了しません。 Java コードには、AWT スレッドを終了するために呼び出される System.exit() が必要です。
推奨される対応
  • System.exit(0) を最後のステートメントとして呼び出すようにアプリケーションを変更する。
  • launchClient コマンドを呼び出す際に、-CCexitVM=true パラメーターを使用する。

Developer Kit フィーチャーをインストールすると、JRE ファイルがバージョン 6.0.1 またはバージョン 6.0.2 からバージョン 6.0 にダウングレードされます。

説明 Application Client バージョン 6.0.0 インストーラーで Developer Kit フィーチャーを選択した場合は、すべてのファイルが Java Runtime Environment (JRE) ファイルをそのままにしておく代わりに、<client_install_root>/java ディレクトリー下にインストールされます。 JRE ファイルは予期せずバージョン 6.0.0 レベルにダウングレードされます。
考えられる原因 Application Client 6.0.0 インストーラーで Developer Kit フィーチャーを選択すると、JRE ファイルがそのまま残るのではなく、実際に <client_install_root>/java ディレクトリーの下にすべてのファイルがインストールされます。 したがって、上記のインストール・シナリオでは JRE ファイルが予期せず 6.0.0 レベルにダウングレードされます。
推奨される対応 次のインストール・ステップを実行して、予期しない JRE ファイルのダウングレードを防ぎます。
IBM からのトラブルシューティングのヘルプ の説明のとおり、IBM サポートが提供する資料およびツールを利用することによって、問題の解決に必要な情報収集の時間が節約できます。 問題報告書を開く前に、以下のサポート・ページを参照してください。



関連タスク
アプリケーション・クライアントの実行
アプリケーション・クライアントの使用
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 8:28:52 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/rcli_troubleshoot.html