Oracle でのセキュリティ障害への対応

事象説明

Oracle10g のJDBC ドライバを使用してデータベースとの接続を行う場合に、セキュリティポリシーの設定が足りないために、java.lang.ExceptionInInitializerError が発生することがあります。

状況の確認方法

セキュリティ例外の発生状況は、次のJava システムプロパティを指定してセキュリティログを採取することで確認できます。 ”AccessControlException”の出力状況を確認してください。

    名前 : java.security.debug
    値    : access.failure

設定方法については、[ ドメイン構築・基本設定ガイド > 3. ドメイン > 3.8. Java VMオプションの設定 > 3.8.1. WebOTX AS で既定のJava VM オプションの設定方法 ] か[ ドメイン構築・基本設定ガイド > 7. WebOTXの内部サービス > 7.1. TPシステム > 7.1.3. 操作・状態確認(プロセスグループ) > 7.1.3.2. 設定の変更 ] を参照してください。

復旧方法

<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 のプロセスグループ内で動作する場合:
    ${INSTANCE_ROOT}/logs/tpsystem/<apgname>/<pgname>/<pgname>.<pid>.log


関連情報