日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mysql没多久自动断开服务_mysql 长时间没连接了 就会自动断开服务

發布時間:2025/3/11 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql没多久自动断开服务_mysql 长时间没连接了 就会自动断开服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是因為mysql 長時間沒連接了 就會自動斷開服務。 解決辦法 1、首先,下載必須的jar包 dbcp 包,目前版本是1.2.1:http://jakarta.apache.org/commons/ dbcp / pool包,目前版本是1.3:http://jakarta.apache.org/commons/pool/, 如果下載的pool包是1.2的版本,還要下載common-collections包:http://jakarta.apache.org/commons/collections/ 在建立我們自己的數據庫連接池時,可以使用xml文件來傳入需要的參數,這里只使用hard code的方式來簡單介紹,所有需要我們自己寫的代碼很少,只要建立一個文件如下: import org.apache.commons. dbcp .BasicDataSource; import org.apache.commons. dbcp .BasicDataSourceFactory; import java.sql.SQLException; import java.sql.Connection; import java.util.Properties; public class ConnectionSource { private static BasicDataSource dataSource = null; public ConnectionSource() { } public static void init() { if (dataSource != null) { try { dataSource.close(); } catch (Exception e) { // } dataSource = null; } try { Properties p = new Properties(); p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver"); p.setProperty("url", "jdbc:oracle:thin:@192.168.0.1:1521:testDB"); p.setProperty("password", "scott"); p.setProperty("username", "tiger"); p.setProperty("maxActive", "30"); p.setProperty("maxIdle", "10"); p.setProperty("maxWait", "1000"); p.setProperty(" removeAbandoned ", "false"); p.setProperty("removeAbandonedTimeout", "120"); p.setProperty("testOnBorrow", "true"); p.setProperty("logAbandoned", "true"); dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p); } catch (Exception e) { // } } public static synchronized Connection getConnection() throws SQLException { if (dataSource == null) { init(); } Connection conn = null; if (dataSource != null) { conn = dataSource.getConnection(); } return conn; } } 接下來,在我們的應用中,只要簡單地使用ConnectionSource.getConnection()就可以取得連接池中的數據庫連接,享受數 據庫連接帶給我們的好處了。當我們使用完取得的數據庫連接后,只要簡單地使用connection.close()就可把此連接返回到連接池中,至于為什 么不是直接關閉此連接,而是返回給連接池,這是因為 dbcp 使用委派模型來實現Connection接口了。 在使用Properties來創建BasicDataSource時,有很多參數可以設置,比較重要的還有: testOnBorrow、testOnReturn、testWhileIdle,他們的意思是當是取得連接、返回連接或連接空閑時是否進行有效性 驗證(即是否還和數據庫連通的),默認都為false。所以當數據庫連接因為某種原因斷掉后,再從連接池中取得的連接,實際上可能是無效的連接了,所以, 為了確保取得的連接是有效的,可以把把這些屬性設為true。當進行校驗時,需要另一個參數:validationQuery,對oracle來說,可以 是:SELECT COUNT(*) FROM DUAL,實際上就是個簡單的SQL語句,驗證時,就是把這個SQL語句在數據庫上跑一下而已,如果連接正常的,當然就有結果返回了。 還有2個參數:timeBetweenEvictionRunsMillis 和 minEvictableIdleTimeMillis,他們兩個配合,可以持續更新連接池中的連接對象,當 timeBetweenEvictionRunsMillis 大于0時,每過timeBetweenEvictionRunsMillis 時間,就會啟動一個線程,校驗連接池中閑置時間超過minEvictableIdleTimeMillis的連接對象。 還有其他的一些參數,可以參考源代碼。 部分參數簡要說明: removeAbandoned :是否自動回收超時連接 removeAbandonedTimeout:超時時間(以秒數為單位) rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的時候,系統會進行無效的 Connection的回收,回收的Connection為removeAbandonedTimeout(默認300秒)中設置的秒數后沒有使用的 Connection logAbandoned:logAbandoned=true的話,將會在回收事件后,在log中打印出回收Connection的錯誤信息,包括在哪個地方用了Connection卻忘記關閉了,在調試的時候很有用。 maxWait:超時等待時間以毫秒為單位 maxIdle:最大空閑連接 minIdle:最小空閑連接 maxActive:最大連接數 testOnBorrow、testOnReturn、testWhileIdle、validationQuery:上面有介紹 另外很重要的一點是每次連接使用完了不要忘了調用connection.close()使連接返回到連接池

總結

以上是生活随笔為你收集整理的mysql没多久自动断开服务_mysql 长时间没连接了 就会自动断开服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。