はい、接続プールの周りにラッパー クラスを記述し、接続の周りにラッパーを書くことができます:
OracleConnection conn=connectionPool.getConnection("java:[email protected] ");
次のように変更します:
public class LoggingConnectionPool extends ConnectionPool{ public OracleConnection getConnection(String datasourceName, String module, String action){ OracleConnection conn=getConnection(datasourceName); CallableStatement call=conn.preparedCall("begin dbms_application_info.setModule(module_name => ?, action_name => ?); end;");試してください{ call.setString(1,module); call.setString(2,アクション); call.execute();最後に{ call.close(); } 新しい WrappedOracleConnection(conn) を返します。 }プレ>上記の WrappedOracleConnection の使用に注意してください。クローズコールをトラップする必要があるため、これが必要です
public class WrappedOracleConnection extends OracleConnection{ public void close(){ CallableStatement call=this.preparedCall("begin dbms_application_info.setModule(module_name => ?, action_name => ?); end;");試してください{ call.setNull(1,Types.VARCHAR); call.setNull(2,Types.VARCHAR); call.execute();最後に{ call.close(); } } // そして、他のすべてのメソッドを実装する必要があります //たとえば public CallableStatement prepareCall(String command){ return super.prepareCall(command); } ...}これが役に立てば幸いです。開発サーバーで同様のことを行って、閉じられていない (プールに戻されていない) 接続をキャッチします。