无法实现与p6Spy一起工作

时间:2015-07-10 09:30:09

标签: java spring p6spy

我尝试了两种方法将p6Spy功能添加到我的弹簧使用项目中。

路线I,

http://templth.blogspot.com.tr/2004/11/integrate-p6spy-with-spring.html 我使用com.p6spy.engine.spy.P6SpyDriver更改了我的驱动程序,并在realdriver=com.ibm.db2.jcc.DB2Driver文件中添加了realdriver spy.properties

但不知怎的,我的realdriver在p6spy之前注册了驱动程序com.ibm.db2.jcc.DB2Driver是spy.properties中的一个真正的驱动程序,但它已经在p6spy之前加载了。 p6spy不会包装这些连接。要么阻止加载驱动程序,要么尝试在spy.properties中将'deregisterdrivers'设置为true

使用:p6spy:前缀对我不起作用。它说无法与该网址建立连接。

因此,我选择在属性文件中设置此 deregisterdrivers=true 。 这次我在日志文件中获取sql但无法执行sqls。我能够在另一个sql编辑器中执行sql。这似乎是真正的联系,一个虚拟的连接来了。

路线II, 我们用春天。所以我尝试过这种方法。将数据源显式提供给p6Spy。但是这次春天抱怨了多个java.sql.DataSource实例。 com.firm.BasicDataFillcom.p6spy.engine.spy.P6DataSource都实现了DataSource。春天不能获得单身。

http://templth.blogspot.com.tr/2004/11/integrate-p6spy-with-spring.html

<bean id="dataSource" lazy-init="true"
    class="com.firm.BasicDataFill">
    <property name="driverClassName" value="${database.connection.driver_class}" />
    <property name="username" value="${database.connection.username}" />
    <property name="password" value="${database.connection.password}" />
    <property name="url" value="${database.connection.url}" />
       ...
    <property name="accessToUnderlyingConnectionAllowed" value="true" />                                
</bean>

<!-- bean id="myDataSource" class="com.p6spy.engine.spy.P6DataSource">
    <constructor-arg>
        <ref local="dataSource"/>
    </constructor-arg>
</bean-->

最后,我发现p6spy v1.3和2.4.1设置有所不同。您对基于弹簧的应用有任何建议吗?

2 个答案:

答案 0 :(得分:1)

我建议从最新版本的P6Spy 2.x开始。您还应该使用2.X的默认版本替换spy.properties文件,该文件记录为here。根据您的应用程序服务器,您可能需要在spy.properties中设置'realdriver'设置以包含'com.ibm.db2.jcc.DB2Driver'。但是,只有在使用阻止JDBC驱动程序自动注册的应用程序服务器时才需要这样做。

要将P6Spy与Spring一起使用,最简单的方法是使用P6SpyDataSource包装当前数据源bean,如所讨论的here。该答案中的示例显示了一个被包装的JNDI数据源,但它可以用于包装任何数据源。注意:如果要包装数据源是P6SpyDataSource,则无需修改JDBC URL。

如果您仍然遇到问题,请在问题中添加更多信息。以下信息有助于排除故障:

  1. 正在使用的P6Spy版本
  2. spy.properties的内容
  3. 数据源的定义(包括app server config if     使用JNDI)
  4. 正在使用的应用服务器类型和版本
  5. Stacktrace包含您可能收到的任何错误。

答案 1 :(得分:-1)

看看Log4jdbc它将完成工作https://code.google.com/p/log4jdbc/