sql >> データベース >  >> RDS >> Oracle

Jboss での DBMS_APPLICATION_INFO の使用

    はい、接続プールの周りにラッパー クラスを記述し、接続の周りにラッパーを書くことができます:

    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); } ...}

    これが役に立てば幸いです。開発サーバーで同様のことを行って、閉じられていない (プールに戻されていない) 接続をキャッチします。



    1. SQLインジェクションからJDBCアプリケーションを保護する方法

    2. アップロードファイルの名前を変更して表示する

    3. PostgreSQL2つの日時/タイムスタンプの間でランダムな日時/タイムスタンプを取得します

    4. SQLステートメントでmysqliをDELIMITERと連携させる方法は?