JDBC ドライバのロードに失敗する場合の対処 |
JDBC データソースからJDBC コネクションを取得する際、JDBC ドライバのクラスパス設定や、JDBC データソースの定義に誤りがある場合に、JDBC ドライバのクラスをロードできずにjava.sql.SQLException が発生することがあります。
JDBC ドライバのロード失敗の発生状況は、JDBC データソースのログファイル(wojdbc.log)、または、プロセスグループのログファイルを採取することで確認できます。
対象となるエラー事象の(1)または(2)の例外が出力された場合、JDBC ドライバへのクラスパスが不足しているかクラスパスの設定に誤りがあります。クラスパスを正しく設定してください。
また、対象となるエラー事象の(3)の例外が出力された場合にも、同様に、JDBC ドライバへのクラスパスが不足しているかクラスパスの設定に誤りがある可能性があります。クラスパスの設定を確認し、問題があればクラスパスを正しく設定してください。
アプリケーションで使用するJDBC ドライバをクラスパスに追加するには、JDBC ドライバを
<INSTANCE_ROOT>/lib/ext 配下に配置する方法と、クラスパスの定義を追加する方法があります。その反映にはドメインの再起動が必要です。クラスパスの設定方法の詳細については、詳細は運用編(ドメインの運用)の「3.7.1 クラスパスの設定」をご参照ください。
対象となるエラー事象の(3)の例外が出力された場合、クラスパスの設定上の問題とは別に、jdbcDriverName プロパティが正しく設定されていないか、データソース名[dataSourceName]に誤りがあります。jdbcDriverName プロパティやデータソース名[dataSourceName]に適切な値を設定してください。詳細は運用編(コンフィグレーション)の「9. JDBC データソース関連の設定」をご参照ください。
jdbcDriverName プロパティは、専用のデータソースの種別[dataSourceType]がないJDBC ドライバを使用する際に設定が必要となります。jdbcDriverName プロパティの設定方法は次の通りです。XXXXX の部分には、使用するJDBC ドライバのjava.sql.Driver 実装クラスを指定してください。
JDBC ドライバのロードに失敗すると、JDBC データソースのログファイル(wojdbc.log)、または、プロセスグループのログファイルに次のいずれかの内容が出力されます(XXXXX の部分には、JDBC ドライバのクラス名が出力されます)。
(1) java.sql.SQLException: [NEC][WOJDBC] class not found : XX.XXX
(2) java.sql.SQLException: [NEC][WOJDBC] failed to load suitable driver : 〜 class not found : XXX.XX
(3) java.sql.SQLException: No suitable driver
ログは、次のファイルに出力されます。
エージェント内で動作する場合:
${INSTANCE_ROOT}/logs/jdbc/wojdbc.log
Standard/Enterprise Editionのプロセスグループ内で動作する場合:
${INSTANCE_ROOT}/logs/tpsystem/<apgname>/<pgname>/<pgname>.<pid>.log