簡體   English   中英

如何將Tomcat配置為不使用數據庫連接池

[英]How to configure Tomcat to Not use Database Connection Pooling

如何將Tomcat配置為使用數據庫連接池?

我想這樣做是因為我有一個應用程序,它對mysql數據庫的調用很少,通常在24小時內少於10次,有些調用在檢索連接時失敗。 似乎Mysql有時會放棄連接,因為它已經空閑了很長時間而沒有告訴數據庫更加冷靜。

值得注意的是,我有另一個應用程序向完全相同的數據庫發出數千個請求,但這絕不會失敗,因此我確信該問題與調用數據庫的罕見性有關。 Mysql可能是問題的一部分,但更新到Postgres將是一個比我現在想要承諾的更大的任務。

所以我嘗試將context.xml配置為testWhileIdle但它是失敗的

<Context path="/store" privileged="true">
    <Resource name="jdbc/myapp" auth="Container" type="javax.sql.DataSource"
              maxActive="100" maxIdle="100" maxWait="10000" testWhileIdle="true"
              username="usrnm" password="pwd" driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/myapp"/>

</Context>

所以現在我想禁用池,所以它每次都得到一個新的連接,但是我不知道怎么做,我看了看

https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Plain_Ol%27_Java

但似乎所有東西都集中在數據庫池中。

試圖解決方案

所以我在回答中嘗試了建議,並將看到未來幾天會發生什么

     <Context path="/store" privileged="true">
            <Resource name="jdbc/myapp" auth="Container" type="javax.sql.DataSource"
                      maxActive="10" maxIdle="10" 
    testWhileIdle="true" validationQuery="select 1" validationQueryTimeout="5"
                      username="usrnm" password="pwd" 
driverClassName="com.mysql.jdbc.Driver" testOnBorrow="true"
                      url="jdbc:mysql://localhost:3306/myapp"/>

        </Context>

什么都不應該阻止你建立自己的聯系和使用它們。 但是,我認為您缺少配置以使連接驗證正常工作。 當測試連接並發現連接錯誤時,應在池之前替換為新連接,以便為您提供連接。 我認為你缺少在測試連接時會使用的validationQuery。 查看https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html上的文檔,並查看為驗證提供必要的值。 嘗試testOnBorrow和validationQuery,這樣每次進行連接時,它都會在返回之前對其進行驗證。 此外,您似乎根據您的使用頻率設置了太多連接。 調整應有助於避免保持不必要的連接打開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM