Oracle でのセキュリティ障害への対応 |
Oracle10g のJDBC ドライバを使用してデータベースとの接続を行う場合に、セキュリティポリシーの設定が足りないために、java.lang.ExceptionInInitializerError が発生することがあります。
セキュリティ例外の発生状況は、次のJava システムプロパティを指定してセキュリティログを採取することで確認できます。 ”AccessControlException”の出力状況を確認してください。
名前 : java.security.debug
値 : access.failure
設定方法については、運用編(ドメインの運用)の「3.7.2. VM オプションの設定」か運用編(TPモニタの運用操作)の「2.9. プロセスグループのプロパティの変更」を参照してください。
<INSTANCE_ROOT>/config/server.policy に次の記述を追加してください。
grant {
permission java.lang.RuntimePermission "createClassLoader";
};
セキュリティ例外発生によって接続に失敗した場合、wojdbc.log、または、プロセスグループのログファイルに次の内容が出力されます。
WODataSource.getConnection() : failed to get connection : catch java.lang.ExceptionInInitializerError
また、webotx_agent.log、または、プロセスグループのログファイルに次の内容が出力されます。
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)
セキュリティ例外発生後に接続に失敗した場合には、wojdbc.log、または、プロセスグループのログファイルに次の内容が出力されます。
WODataSource.getConnection() : failed to get connection : catch java.lang.NoClassDefFoundError
ログは、次のファイルに出力されます。
エージェント内で動作する場合:
${INSTANCE_ROOT}/logs/jdbc/wojdbc.log
Standard/Enterprise Editionのプロセスグループ内で動作する場合:
${INSTANCE_ROOT}/logs/tpsystem/<apgname>/<pgname>/<pgname>.<pid>.log