Oracle
 sql >> база данни >  >> RDS >> Oracle

използвайки DBMS_APPLICATION_INFO с Jboss

да, можете да напишете клас обвивка около вашия пул връзки и обвивка около връзките, така че да кажем, че имате:

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;");
        try{
            call.setString(1,module);
            call.setString(2,action);
            call.execute();
        finally{
            call.close();
        }
        return new 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;");
        try{
            call.setNull(1,Types.VARCHAR);
            call.setNull(2,Types.VARCHAR);
            call.execute();
        finally{
            call.close();
        }
    }

    // and you need to implement every other method
    //for example
    public CallableStatement prepareCall(String command){
        return super.prepareCall(command);
    }
    ...
}

Надявам се това да помогне, правя нещо подобно на сървър за разработка, за да уловя връзки, които не са затворени (не са върнати в пула).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:селективна уникалност на базата на функция индекс

  2. Как да получите текущ обект Connection в Spring JDBC

  3. Oracle 18c Нова функция:Онлайн модификация на разделянето

  4. varchar2(n BYTE|CHAR) по подразбиране -> CHAR или BYTE

  5. Как да повторите заявка в Oracle