2016-05-13 54 views
1

出于某种原因,当我使用:log4jdbc力回报ConnectionSpy司机

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

我往往会得到不同的连接回来。在这种情况下,它是之间的混合:

  1. connection = (org.apache.derby.impl.jdbc.EmbedConnection) [email protected] (XID = 598), (SESSIONID = 1), (DATABASE = /home/user/mydb), (DRDAID = null) - 我不想

和:

  • connection = (net.sf.log4jdbc.ConnectionSpy) [email protected] - 我确实希望
  • 更具体地讲,当我运行使用public static void main方法,然后它工作和我回去#2但是当我运行相同代码在运行Web应用程序的启动周期后,我得到#1

    有没有办法迫使log4jdbc总是返回net.sf.log4jdbc.ConnectionSpy

    +0

    也许你在不同的情况下有不同的CLASSPATH?也许你在不同的情况下使用不同的JDK运行?也许在一种情况下,你已经注册了一组不同的JDBC驱动程序与DriverManager比另一种情况下? –

    +0

    不,相同的项目,相同的代码,甚至相同的方法。唯一不同的地方是我运行项目的另一个地方。 – Hooli

    回答

    0

    我想通了。你可以用这种方式强制包装连接:

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