无法实现p6Spy

问题描述:

我试过两种方法将p6Spy功能添加到弹簧使用的项目中。无法实现p6Spy

路线我,

http://templth.blogspot.com.tr/2004/11/integrate-p6spy-with-spring.html 我改变了我的司机与com.p6spy.engine.spy.P6SpyDriver和realdriver realdriver=com.ibm.db2.jcc.DB2Driver加入spy.properties文件。

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

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

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

Route 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设置而异。你对基于弹簧的应用程序有任何建议吗?

+0

也许这将有助于某人: http://*.com/a/39272477/4952633 –

看一看Log4jdbc它会做的工作https://code.google.com/p/log4jdbc/

+0

感谢您的意见。我会检查这个。我们使用Java 1.7 :) –

+0

感谢分享,但是我无法通过它获得'DB2'的连接。 –

+1

让我稍微不同意,比较两个项目的提交活动听起来像是p6spy的明显胜利,请参阅:https://github.com/p6spy/p6spy/commits/master vs https://github.com/arthurblake/ log4jdbc/commits/master(接触log4jdbc提交的最后一个代码是:27.12.2012) –

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

要在Spring中使用P6Spy,最简单的方法是使用P6SpyDataSource打包当前数据源Bean,如讨论的here。该答案中的示例显示了正在封装的JNDI数据源,但可用于封装任何数据源。注意:如果您要封装的数据源是P6SpyDataSource,则不需要修改JDBC URL。

如果您仍然遇到问题,请为您的问题添加更多信息。下面的信息将在故障排除有所帮助:

  1. P6SPY的版本中使用
  2. 间谍的内容。性能
  3. 您的数据源的定义(包括应用程序服务器配置,如果使用JNDI )
  4. 类型的应用程序服务器和版本的使用含
  5. 堆栈跟踪,你可能已收到任何错误。