sql >> Database teknologi >  >> RDS >> Oracle

bruger DBMS_APPLICATION_INFO med Jboss

ja, du kan skrive en indpakningsklasse omkring din forbindelsespulje, og en indpakning omkring forbindelsen, så lad os sige, at du har:

OracleConnection conn=connectionPool.getConnection("java:[email protected]");

Skift det til:

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

Bemærk brugen af ​​WrappedOracleConnection ovenfor. Du har brug for dette, fordi du er nødt til at fælde det lukkede opkald

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

Håber dette hjælper, jeg gør noget lignende på en udviklingsserver for at fange forbindelser, der ikke er lukket (ikke returneret til puljen).



  1. Liste over brugere, der har adgang til databasen

  2. Grundlæggende om tabeludtryk, del 6 – Rekursive CTE'er

  3. Brug af entity frameworket med en MySQL DB og modeldesigneren henter ikke lagrede proc-parametre

  4. Kan ikke åbne View->DBA Menu i SQL Developer (Oracle 12C Standard Edition installeret)