2015-07-10 57 views
1

我試過兩種方法將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://stackoverflow.com/a/39272477/4952633 –

回答

-1

看一看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) –

1

我會建議先從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. 堆棧跟蹤,你可能已收到任何錯誤。