WebSphere Application Server, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

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

データ・アクセスの問題

WebSphere Application Server 診断ツールは、データベース接続に関する問題のトラブルシューティングに役立つサービスを提供しています。 さらに、IBM Web サイトには、データベース固有の接続の問題に対する文書化された解決策を見つけるための柔軟な検索機能が用意されています。

以下の手順は、接続に関する問題を迅速に切り分けるのに役立ちます。

  1. このアプリケーション・サーバーのログ・ファイルをブラウズして、手掛かりを探します。

    JVM ログの表示 を参照してください。デフォルトでは、これらのファイルは app_server_root/server_name/SystemErr.log および SystemOut.log です。

  2. データ・ソースの helper クラスのプロパティーをブラウズして、 そのプロパティーに誤りがなく、それが WebSphere Application Server のクラスパス上にあることを確認します。 不可解なエラーまたは振る舞いが発生する場合は、helper クラス名の欠落や命名の誤りが原因である可能性があります。 WebSphere Application Server は、指定されたクラスをロードできない場合にはデフォルトの helper クラスを使用しますが、これはデータベース・マネージャーで正しく機能しない場合があります。
  3. データ・ソースの Java Naming and Directory Interface (JNDI) 名が、 そのデータ・ソースへのアクセスを試みているクライアントが使用する名前と一致することを検査します。 エラー・メッセージに、問題がネーミングに関連している可能性があると示される場合、 つまり、メッセージ内で name server または naming service について言及されるか、 あるいは NMSV で始まるエラー ID が含まれている場合は、 『ネーミング関連の問題』および『ネーミング・サービス・コンポーネントのトラブルシューティング』のトピックを参照してください。
  4. トレース仕様 RRA=all=enabled を使用して、 リソース・アダプター用のトレースを使用可能にします。 指示に従ってトレース出力をダンプしてブラウズし、問題の原因をしぼりこみます。

データベース固有のトラブルシューティングに関するヒントの包括的なリストについては、WebSphere Application Server 製品サポート・ページを参照してください。(この項目の終わりにあるリンクをご覧ください。) 「Search Support」フィールドに、検索語の 1 つとしてデータベース・ベンダー名を入力します。 「Solve a problem」を選択して、次に「検索」をクリックします。

このインフォメーション・センターの IBM からのトラブルシューティングのヘルプ の項目で常にサポート内容を参照することができます。

現在、このインフォメーション・センターでは、以下のデータベースに関するトラブルシューティングのヒントの提供は限定されています。

一般的なデータ・アクセス問題

IllegalConnectionUseException

このエラーは 、WAS40DataSource から取得した接続が複数のスレッド上で使用されている場合に生じることがあります。 このような使用法は、J2EE 1.3 プログラミング・モデルに違反しているため、 サーバー上で検出されると例外が生成されます。この問題は、 サーブレットまたは Bean 管理パーシスタンス (BMP) タイプの Enterprise Beans を通じてデータ・ソースにアクセスするユーザーに関して生じます。

この問題を確認するには、接続共用のコードを調べます。 コードは、プログラミング・モデルの推奨に従わないことで、意図せずに共用を発生させる可能性があります。 例えば、サーブレットのインスタンス変数内に接続を保管することによって、 複数のスレッド上で同時に接続が使用される可能性があります。

WTRN0062E: 1 フェーズ可能なリソースを複数取得しようとする不正な試みが行われました。

このエラーが発生する理由としては、 次のようなものが考えられます。
  • getConnection メソッドが異なる接続プロパティー (AccessIntent など) を持つときに、 単一フェーズ接続を共用しようとした。 こうすると、共用不可能な接続が作成されます。
  • データ・ソースが XA リソースでないときに、 グローバル・トランザクションで複数の共用不可能な接続を使用しようとした。
  • XA リソースまたは別の 1 フェーズ・リソースが既にグローバル・トランザクションで使用されているときに、 このグローバル・トランザクションで 1 フェーズ・リソースを使用しようとした。
    • グローバル・トランザクションの有効範囲内で接続を複数回取得しようとし、 使用している少なくとも 1 つのリソース参照が接続が共用不可能であることを示していて、 データ・ソースが 2 フェーズ・コミット・トランザクションをサポートするように構成されていない。 XAResource はサポートされません。 リソース参照を使用しない場合は、 デフォルトの共用不可能接続に設定されます。
    • グローバル・トランザクションの有効範囲内で接続を複数回取得しようとし、 使用している少なくとも 1 つのリソース参照が接続が共用可能であることを示していて、 データ・ソースが 2 フェーズ・コミット・トランザクションをサポートするように構成されていない。 XAResource はサポートされません。 また、接続を共用可能と指定した場合も、 各 getConnection 要求は異なる接続プロパティー (IsolationLevel や AccessIntent など) を使用して行われます。 この場合、接続は共用可能ではなく、複数の接続が返されます。
    • グローバル・トランザクション内で、複数のコンポーネント (サーブレット 、Session Beans、BMP Entity Beans、または CMP Entity Beans) にアクセスしている。 すべてが同じデータ・ソースを使用し、 すべてがリソース参照において共用可能な接続を指定する場合、 それらすべてが同じ接続を共用することが予期されます。 プロパティーが異なる場合は、複数の接続を取得してください。 CMP Bean 上の AccessIntent 設定は、それらのプロパティーを変更します。 接続を共用するためには、AccessIntent 設定が同一である必要があります。 非 CMP コンポーネントと接続を共用する CMP Beans について詳しくは、 インフォメーション・センターのデータ・アクセス・セクションの『データ・アクセス・アプリケーション・プログラミング・インターフェース・サポート』および『例: IBM 拡張 API を使用してデータにアクセスし、 コンテナー管理パーシスタンス Beans と Bean 管理パーシスタンス Beans の間で接続を共用する』のトピックを参照してください。
このエラーを解決するには、以下のようにします。
  • getConnection 要求とともにクライアント・コードが渡すものを検査し、 それらが相互に整合性があることを確認します。
  • アセンブリー・ツールを使用して、リソース・バインディングから接続の共用有効範囲を検査します。
    • 共用不可能な接続有効範囲を実行している場合は、 データ・ソースが XA データ・ソースであることを確認します。
    • 共用可能な接続有効範囲を実行している場合は 、AccessIntent を含むすべての接続プロパティーが共用可能であることを確認します。
  • 管理コンソールの「Manage JDBC resource」パネルで、JDBC プロバイダーのインプリメンテーション・クラス が XA タイプのトランザクションをサポートするクラスであることを確認します。

データ・ソースまたはリソース・アダプターへのアクセス中の ConnectionWaitTimeoutException

アプリケーションが、WebSphere Application Server データ・ソースまたは JCA 準拠のリソース・アダプターにアクセスしようとしているときに、 それぞれ com.ibm.websphere.ce.cm.ConnectionWaitTimeoutException、 または com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException のような例外を受け取る場合、 考えられる原因は以下のとおりです。
  • 特定のプールの接続の最大数が非常に低く設定されている。接続のコンカレント使用要求が、 接続プール用に構成された最大値を超えています。 CPU 使用率が高くないにもかかわらずこれらの例外を定期的に受け取る場合は、これが問題の原因です。 この例外は、使用中のサーバーに、スレッドを保持するために使用できる接続がほとんどないことを示しています。
  • 接続待ち時間が非常に低く設定されている。現行の接続要求が高すぎて、短時間有効な接続が存在しない状態になることがあります。接続待ちタイムアウト値が非常に低い場合、 ユーザーが接続をプールに戻す直前にタイムアウトになることがあります。 これは、接続待ち時間を調整することである程度緩和できます。 延長期間中に最大に近い接続を使用しており、定期的にこのエラーを受け取る場合は、これが問題の原因です。
  • いくつかの接続をクローズしていない、または接続をプールに戻す速度が非常に遅い。 この状況が発生するのは、共用不能な接続を使用している、接続をクローズし忘れた、 または接続を使用し終えて長時間経過した後にクローズしたなどというときに、 接続が再使用のためにプールに戻されなかった場合です。 プールは空になり、すべてのアプリケーションが ConnectionWaitTimeoutExceptions を入手します。 この問題が発生すると、接続プール内の接続が使い尽くされ、 ほとんどの要求に対してエラーを受け取ることになります。
  • サーバーまたはバックエンド・システムが処理するリソースを保持するよりも、多くのロードを駆動している。この場合、より必要なリソースを判別し、ニーズに対応するために構成またはハードウェアをアップグレードする必要があります。 アプリケーションやデータベース・サーバーの CPU がほぼ 100% 使用中である場合には、これが問題の原因です。
これらの問題を解決するには、以下のいずれかを行います。
  • 使用する接続数を少なくするようにアプリケーションを変更します。
  • 接続を適宜クローズします。
  • MaxConnections または ConnnectionWaitTimeout のプール設定を変更します。
  • リソースとその構成を調整します。

com.ibm.websphere.ce.cm.StaleConnectionException: [IBM][CLI Driver] SQL1013N The database alias name or database name "NULL" could not be found. SQLSTATE=42705

このエラーは、データ・ソースが定義されているにもかかわらず、databaseName 属性とそれに対応する値が「カスタム・プロパティー」パネルに追加されていない場合に生じます。

databaseName プロパティーを追加するには、以下のようにします。
  1. 管理コンソールで「リソース」>「JDBC プロバイダーの管理」の順にリンクをクリックする。
  2. 問題のあるデータ・ソースをサポートする JDBC プロバイダーを選択する。
  3. データ・ソース」を選択してから、問題のあるデータ・ソースを選択する。
  4. 追加プロパティー」の下の「カスタム・プロパティー」をクリックする。
  5. databaseName」プロパティーを選択 (存在しない場合には追加) して、実際のデータベース名を値として入力する。
  6. 適用」または「OK」をクリックし、アクション・バーの「保管」をクリックする。
  7. 再びデータ・ソースにアクセスする。

java.sql.SQLException: java.lang.UnsatisfiedLinkError:

このエラーは、データベースをサポートするバイナリー・ライブラリーを含むディレクトリーが 、WebSphere Application Server が開始された環境の LIBPATH 環境変数に含まれていないことを示します。

DBM ベンダーのライブラリーを含むパスは、dbm によって変わります。それらを検索する方法の 1 つは、 エラー・メッセージに指定された欠落ライブラリーをスキャンすることです。次に、LIBPATH 変数を 、WebSphere Application Server が実行されたアカウントの .profile の中で、あるいは .sh ファイルにステートメントを追加して startServer プログラムを実行することによって、 欠落ディレクトリーを含むように訂正することができます。

トランザクションを実行しようとしているときに、「 J2CA0030E: Method enlist caught java.lang.IllegalStateException」が、「 WTRN0063E: 既存の 2 フェーズ可能リソースがあり、1 フェーズ可能リソースを取得しようとする不正な試みが行われました。」というエラーにラップされた。

このエラーは、Last Participant Support が欠落しているか使用不可の場合に生じることがあります。 Last Participant Support を使用すると、1 フェーズ対応リソースと 2 フェーズ対応リソースを、同じトランザクション内で取得できます。

Last Participant Support は、以下が true の場合のみ使用できます。
  • WebSphere Application Server Programming Model Extensions (PME) がインストールされている。 PME は、Application Server Integration Server 製品に含まれています。
  • PME のインストール時に、追加の Integration Server 拡張機能オプションが使用可能になっている。 この機能は、標準インストールを実行すると、デフォルトで使用可能になります。 カスタム・インストールを実行する場合は、この機能を使用不可にするオプションがあり、 これによって Last Participant Support は使用不可になります。
  • 1 フェーズ・リソースをリストしているアプリケーションが、 「Accept heuristic hazard」オプションを使用可能にしてデプロイされている。 このデプロイメントは、アセンブリー・ツールを使用して実行されます。

データベース操作を行おうとすると 、"J2CA0114W: No container-managed authentication alias found for connection factory or datasource datasource" というメッセージが表示される

このエラーは、JACL スクリプトを使用してデータ・ソースを作成した後で、アプリケーションを実行してその データ・ソースにアクセスする場合に、SystemOut.log ファイルで発生することがあります。

このようなエラー・メッセージが出るのは、JACL スクリプトによって 、CMP 接続ファクトリーでコンテナー管理認証別名が設定されなかったためです。 そのため、この JACL には次の行が欠落しています。
$AdminConfig create MappingModule $cmpConnectorFactory  "{mappingConfigAlias 
DefaultPrincipalMapping} {authDataAlias $authDataAlias}

この問題を解決するためには、欠落した行を JACL スクリプトに追加して、 もう一度スクリプトを実行します。JACL スクリプトのサンプルについては 、例: Java Management Extensions API およびスクリプト・ツールを使用した JDBC プロバイダーおよびデータ・ソースの作成 を参照してください。

ws_ant コマンドを使用して、 HP プラットフォーム上で Structured Query Language in Java 用にデータベース・カスタマイズを実行すると、エラーがスローされる

ws_ant コマンドを使用して、 HP プラットフォーム上で Structured Query Language in Java (SQLJ) 用にデータベース・カスタマイズを実行すると、次のようなエラーが表示されることがあります。
[java] [ibm][db2][jcc][sqlj]
[java] [ibm][db2][jcc][sqlj] Begin Customization
[java] [ibm][db2][jcc][sqlj] encoding not supported!!
このエラーは、 HP のデフォルト文字セットを使用してデータベースを作成したことが原因で発生した可能性があります。 Java Common Client (JCC) ドライバーは、Software Development Kit ( SDK) を使用して、コード・ページの変換を実行します。 しかし本製品に付属の SDK は HP のデフォルトのコード・ページに対応していません。
データベースを作成する前に、 LANG を ISO ロケールに設定します。次のように指定します。

export LANG=en_US.iso88591

情報管理ソフトウェアの IBM サポート・サイトを参照して、DB2 の最新技術情報にアクセスしてください。

コンテナー管理パーシスタンス (CMP) で、定義されたとおりにデータベース・アクセス機能を正常に取得できない。

WebSphere Application Server が、接続ファクトリー上のデータベースでアクセスされる特定の生成済みコードをキャッシングしていて、Java アーカイブ (JAR) ファイルにおける変更によりデータベース・アクセスの再生成が必要になった場合、これらの変更はサーバーを停止して再始動するまで有効になりません。

これらの障害が発生する可能性のある例を以下に挙げます。
  • エンタープライズ Bean カスタム finder メソッドを追加した場合。NullPointerException 例外が作成されます。
  • エンタープライズ Bean カスタム finder メソッドを更新した場合。新しい SQL ステートメントが実行されません。
  • スキーマ・マッピングを変更した場合。新しい SQL ステートメントが実行されません。

要約すると、カスタム finder メソッドを含むエンタープライズ Bean を追加または更新した場合は、サーバーを停止して再始動する必要があります。




サブトピック
データ・アクセスの問題 - Oracle データ・ソース
データ・アクセスの問題 - DB2 データベース
データ・アクセスの問題 - SQL サーバー・データ・ソース
データ・アクセスの問題 - Cloudscape データベース
データ・アクセスの問題 - Sybase データ・ソース
関連タスク
例: CMP Bean と BMP Bean 間の接続を共用するための IBM 拡張 API の使用
関連資料
データ・アクセス API に対する拡張機能
参照トピック    

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

最終更新: Jan 21, 2008 5:05:53 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rtrb_dsaccess.html