【发布时间】:2015-07-10 09:30:08
【问题描述】:
我尝试了两种方法将 p6Spy 功能添加到我的 spring 使用的项目中。
路线一,
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 文件中。
但不知何故,我的 realdriver 在 p6spy 之前注册 驱动程序 com.ibm.db2.jcc.DB2Driver 是 spy.properties 中的真正驱动程序,但它已在 p6spy 之前加载。 p6spy 不会包装这些连接。要么阻止驱动程序加载,要么尝试在 spy.properties 中将 'deregisterdrivers' 设置为 true
使用:p6spy: 前缀对我不起作用。它说无法与该网址建立连接。
所以,我选择在属性文件中设置这个 deregisterdrivers=true。
这次我在日志文件中获取 sql 但无法执行 sqls。我可以在另一个 sql 编辑器中执行 sql。似乎真正的联系消失了,而虚拟的联系出现了。
路线二,
我们使用弹簧。所以我试过这个方法。将数据源明确地提供给 p6Spy。但是这次 spring 抱怨了多个 java.sql.DataSource 实例。 com.firm.BasicDataFill 和 com.p6spy.engine.spy.P6DataSource 都实现了 DataSource。 Spring 无法获取单例。
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 的设置不同。您对基于弹簧的应用程序有什么建议吗?
【问题讨论】:
-
也许这对某人有帮助:stackoverflow.com/a/39272477/4952633