アプリケーション・クライアントのトラブルシューティングのヒント
このトラブルシューティング・ガイドを使用して、Java™ Platform, Enterprise Edition (Java EE) アプリケーション・クライアントの共通の問題をデバッグします。Java EE アプリケーション・クライアントの例外のいずれかのトレース項目を調べて、ガイドの中でその例外を見つけます。
ガイドの中のエラーの一部はサンプルです。 実際に受け取るエラーは、ここに示されているものとは異なる場合があります。 また、-CCverbose=true オプションを指定して launchClient コマンドを再実行することも有効です。 このオプションは、Java EE アプリケーション・クライアント・ランタイムが初期化されるときに追加情報を提供します。
エラー: java.lang.NoClassDefFoundError
説明 | 考えられる原因 | 推奨される対応 |
---|---|---|
この例外は、指定されたクラスを Java コードがロードできない場合にスローされます。 |
|
指定されたクラスがエンタープライズ・アーカイブ (EAR) ファイル内の Java アーカイブ (JAR) ファイルに存在しているかどうかを確認します。
存在する場合には、そのクラスのパスが正しいことを確認します。
例えば、次のような例外を受け取った場合、java.lang.NoClassDefFoundError: WebSphereSamples.HelloEJB.HelloHomeEAR ファイル内の JAR ファイルの 1 つに HelloHome クラスが存在することを確かめます。 存在する場合には、そのクラスのパスが WebSphereSamples.HelloEJB であることを確かめます。 |
- アセンブリー・ツールを用いて EAR ファイルを開き、「アプリケーション・クライアント」を選択します。
- EAR ファイル内の他の JAR ファイルの名前を Classpath フィールドに追加します。
Classpath フィールドに複数の JAR ファイルを入力する場合には、 JAR 名の間をスペースで分離するようにしてください。
それでも問題が解決しない場合は、 クラスが、EAR ファイルではなく、ファイル・システムからロードされた可能性があります。 問題のクラスが例外に指定されているクラスではないため、 このエラーをデバッグすることは困難です。 あるいは、例外に指定されているクラスより前に、別のクラスがファイル・システムからロードされました。 このエラーを訂正するには、-CCclasspath オプションで指定されたクラスパ ス、およびアプリケーション・クライアント・リソース構成ツールで構成されたクラスパスを調べます。
また、クライアント・コンテナー・リソース構成スクリプト・ツールを使用することもできます。
EAR ファイルにも存在するクラスを探します。 EAR ファイルでなく、ファイル・システム上でクラスの 1 つが検出された状況を解決する必要があります。クラスパスから項目を除去するか、あるいは JAR ファイルおよびクラスを、ファイル・システムから参照するのではなく、EAR ファイルに組み込みます。
ツールで -CCclasspath パラメーターまたは リソース・クラスパスを使用し、複数の JAR ファイルまたはクラスを構成し ている場合には、ご使用のオペレーティング・システム用の正しい区切り文字 が使用されていることを確かめてください。 Classpath フィールドとは違って、これらのクラスパス・フィールドはプラ ットフォーム固有の区切り文字を使用します。
区切
り文字は、コロンです。
区切り文字は、セミコロンです。
エラー: com.ibm.websphere.naming.CannotInstantiateObjectException
エラー: 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 名と一致しない場合にも起こります。 |
|
間違ったホスト・サーバーにアクセスしている場合は、 正しいホスト・サーバー名を指定する -CCBootstrapHost パラメーターを用いて、 launchClient コマンドを再度実行します。 正しいホスト・サーバーにアクセスしている場合には、 製品の dumpnamespace コマンド行ツールを使用して、 ホスト・サーバーの JNDI 名前空間のリストを参照します。 障害を起こしたオブジェクトの名前が見つからない場合には、 リソースがホスト・サーバーにインストールされていないか、 あるいは適切なアプリケーション・サーバーが開始されていないかのどちらかです。 リソースが既にインストールされており開始されていることが判明した場合には、 クライアント・アプリケーション内の JNDI 名がホスト・サーバー上のグローバル JNDI 名と一致しません。 アセンブリー・ツールを使用して、クライアント・アプリケーション内の障害を起こしたオブジェクト名の JNDI バインディング値をホスト・サーバー・アプリケーション内のオブジェクトの JNDI バインディング値と比較します。 これらの値は一致しなければなりません。 |
エラー: javax.naming.ServiceUnavailableException
エラー: 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
エラー: 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 がインストールされているマシン上でクライアントを実行させている場合にのみ動作します。 |
|
正しいホスト・サーバーに対して実行していない場合は、launchClient コマンドを再度実行し、 -CCBootstrapHost パラメーターを使ってホスト・サーバーの名前を指定します。 そうでなければ、ホスト・サーバー上の Application Server を開始して、 launchClient コマンドを再実行します。 |
![[Windows]](../images/windows.gif)
エラー: javax.naming.CommunicationException
エラー: javax.naming.CommunicationException: Could not get the users matching the pattern wasuser6 because of the following exception javax.naming.CommunicationException: simple bind failed: server_location. Root exception is javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake.
説明 | 考えられる原因 | 推奨される対応 |
---|---|---|
この例外は、LDAP ユーザー ・レジストリーを使用して、管理、アプリケーション、および Java 2 セキ ュリティーを使用可能にすると発生します。デプロイ メント・マネージャーは、正常に再始動されますが、ユーザーは管理コンソー ルにログインすることはできません。エラー・メッセージは、SystemOut.log に表示され ます。 |
|
「SSL 使用可能」オプションをクリアし、接続を再試行します。「SSL 使用可能 」オプションは、WebSphere Application Server プラグインとアプリケーション・サーバー間の接続を SSL を使用して保護するか どうかを指定します。 デフォルトでは SSL を使用しません。 |
エラー: javax.naming.NameNotFoundException
エラー: javax.naming.NameNotFoundException: Name comp/env/ejb not found in context "java:"
説明 | 考えられる原因 | 推奨される対応 |
---|---|---|
この例外は、指定された名前を Java コードがローカル JNDI 名前空間内で見つけられない場合にスローされます。 |
|
アセンブリー・ツールを用いて EAR ファイルを開き、障害の原因となっている名前に対するバインディングを検査します。 この情報が正しいことを確かめます。 リソース参照を使用している場合には、アプリケーション・クライアント・リソース 構成ツールを用いて EAR ファイルをオープンし、リソース参照にク ライアント構成情報があること、およびリソース参照の名前とクライアント 構成の JNDI 名が完全に一致することを確認してください。 この値が正しい場合には、クラス・ローダー・エラーがあることが考えられます。 |
エラー: java.lang.ClassCastException
エラー: 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 のクライアント・サイド・バインディングを検出できない場合に発生します。 |
|
EAR ファイル内に配置されている EJB JAR ファイルを調べて、 クラスが Enterprise Java Beans (EJB) クライアント・サイド・バインディングを含んでいるかどうか検査します。 これらのファイルは、 名前が _Stub および _Tie で終わるクラス・ファイルです。 バインディング・クラスが EJB JAR ファイルにある場合には、 クラス・ローダー・エラーが生じることがあります。 |
エラー: WSCL0210EError: java.lang.NoClassDefFoundError
エラー: WSCL0210E: エンタープライズ・アーカイブ・ファイル [EAR ファイル名] が見つかりませんでした。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 仮想マシン (JVM) コードを終了します。 しかし、AWT スレッドがあるので、 JVM コードは、System.exit が呼び出されるまでは終了しません。 | AWT スレッドがあるために、JVM コードが終了しません。 Java コードで、AWT スレッドを終了するために System.exit() を呼び出す必要があります。 |
|
![[Windows]](../images/windows.gif)
アプレット・クライアント・アプリケーションが Internet Explorer で HTML ブラウザーを起動できない
説明 | 考えられる原因 | 推奨される対応 |
---|---|---|
アプレット・クライアント・アプリケーションは、Windows システムでのみ実行されます。 アプレット・クライアント・アプリケーションが実行されると、 ブラウザーのウィンドウにアプリケーション出力データが表示されます。 Windows XP オペレーティング・システム Service Pack 2 で Internet Explorer を使用している場合に、 出力データを表示しようとしてエラーになることがあります。 | Windows XP オペレーティング・システム Service Pack 2 には、 ポップアップ・ブラウザー・ウィンドウの表示をブロックするセキュリティー機能があります。 |
|