由于某些原因,当我使用:

connection = DriverManager.getConnection("jdbc:log4jdbc:derby:/home/user/mydb");


我倾向于重新获得不同的连接。在这种情况下,它是以下两者之间的混合:


connection = (org.apache.derby.impl.jdbc.EmbedConnection) org.apache.derby.impl.jdbc.EmbedConnection@2001280736 (XID = 598), (SESSIONID = 1), (DATABASE = /home/user/mydb), (DRDAID = null)-我不想要的


和:


connection = (net.sf.log4jdbc.ConnectionSpy)net.sf.log4jdbc.ConnectionSpy@32b260fa-我想要


更具体地说,当我使用public static void main方法运行时,它可以工作并且返回#2,但是当我在运行Web应用程序的启动周期后运行相同的代码时,则得到了#1

有没有办法强制log4jdbc始终返回net.sf.log4jdbc.ConnectionSpy

最佳答案

我想到了。您可以通过以下方式强制包装连接:

Connection temp = DriverManager.getConnection("jdbc:log4jdbc:derby:/home/user/mydb");
connection = new net.sf.log4jdbc.ConnectionSpy(temp);

09-04 13:33