1

出于某种原因,当我使用:

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

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

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

和:

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

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

有没有办法强制log4jdbc总是返回net.sf.log4jdbc.ConnectionSpy

4

1 回答 1

0

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

Connection temp = DriverManager.getConnection("jdbc:log4jdbc:derby:/home/user/mydb");
connection = new net.sf.log4jdbc.ConnectionSpy(temp);
于 2016-05-13T12:18:11.503 回答