我在tomcat(版本7)中使用dbcp連接池,並且我的代碼中有一處連接泄漏。很短的時間量之後,一個新的連接請求返回以下異常:試圖確定在tomcat中放棄連接的來源
「無法獲取連接,池錯誤超時等待閒置對象」
我回去通過我的代碼和我來說看起來好像所有的連接都正常關閉(不是每個人都這樣說...)。
爲了調試這個我加入的context.xml以下屬性:
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="300"
所以資源標記現在看起來是這樣的:
<Resource name="jdbc/findata" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="5" maxWait="10000"
username="root" password="xxxxxx" driverClassName="com.mysql.jdbc.Driver"
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="300"
url="jdbc:mysql://localhost:3306/findata"/>
我再啓動Tomcat和開始打網絡直到出現錯誤消息(在瀏覽器窗口中)。但是我還沒有弄清楚「logAbandoned」屬性在哪裏寫信息。我期待在
/usr/share/apache-tomcat-7.0.11/logs
,但在那裏只在最近修改的日誌文件是
localhost_access_log.2011-04-18.txt
任何援助深表感謝。
我從來沒有想過如何讓廢棄的連接出現在日誌中,但我又回到了代碼,這次我成功了找出泄漏的來源。誰需要調試器或日誌 - 對嗎? ;) – opike 2011-04-18 19:40:54