|
|
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。 我复制了我的实现:
希望它有帮助! 贝诺特 |
|
|
maddy · 如何根据oracle SQL中的某一列值进行排名 2 年前 |
|
|
kiric8494 · 显示以元音开头和结尾的城市名称 3 年前 |
|
|
Franz Biberkopf · Oracle:组合子查询和聚合函数 3 年前 |
|
|
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 3 年前 |
|
|
Arifullah · 如何从oracle中的列中删除特定的初始字符? 3 年前 |
|
|
Anar · Oracle SQL用户定义函数 3 年前 |
|
|
user1312312 · 如何为一组表编写通用触发器? 4 年前 |