![]() |
1
1
是的,您可以围绕连接池编写一个包装器类,围绕连接编写一个包装器类。 所以假设你有: OracleConnection conn=connectionPool.getConnection("java:scott@mydb"); 把它改成: 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); } 请注意上面使用的WrappedorracleConnection。你需要这个,因为你需要捕捉结束通话 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); } ... } 希望这有帮助,我在开发服务器上做类似的事情来捕获未关闭(未返回池)的连接。 |
![]() |
2
1
如果您使用的是JBoss,那么可以使用“有效的连接检查程序”。 此类通常用于检查连接的有效性。 但是,由于每次连接池向用户提供连接时都会调用它,因此您可以使用它来设置DBMS应用程序信息。 在oracle-ds.xml中声明这样一个类,如下所示:
类必须实现org.jboss.resource.adapter.jdbc.validConnectionChecker接口。 如果使用maven,则可以将此接口包含在以下依赖项中:
此接口只有一个方法:ISvalidConnection。 我复制了我的实现:
希望它有帮助! 贝诺特 |
|
user29759326 · 如何返回递归函数中的最后一个值? 5 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 5 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 5 月前 |
![]() |
rudraraj · java中未声明最终变量 5 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 5 月前 |