हां, आप अपने कनेक्शन पूल के चारों ओर एक रैपर वर्ग लिख सकते हैं, और कनेक्शन के चारों ओर एक रैपर लिख सकते हैं, तो मान लें कि आपके पास है:
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); } ... }
उम्मीद है कि यह मदद करता है, मैं विकास सर्वर पर कुछ ऐसा ही करता हूं जो बंद नहीं हैं (पूल में वापस नहीं) कनेक्शन पकड़ने के लिए।