數(shù)據(jù)庫連接超時java處理的兩種方式
數(shù)據(jù)庫連接超時java處理的方式
在測試一套數(shù)據(jù)庫是否能夠連接上的過程中,我們就會遇到這樣的一種情況,當不能連接的時候會存在代碼運行時間超級長的問題,這樣的話在頁面上會存在卡死的現(xiàn)象,為了解決這個問題
總結了下面兩種方式:
1.使用socket的方式設置連接超時(通用)
這個主要是通過使用socket.connect()方法建立連接,其連接主要需要用到ip和相關端口號(記得是int類型喲)
具體使用方法如下:
Socket socket = new Socket();
try
{
? ?socket.connect(new InetSocketAddress(ip, portt), 3000);
? ?socket.setSoTimeout(3000);
? ?socket.getInputStream().read();
} catch (SocketTimeoutException e)
{
? ?if (!socket.isClosed() && socket.isConnected()){
? ??? ?System.out.println("讀取超時");
? ?}else{
? ??? ? System.out.println("連接超時");
? ??? ? return null;
? ?}
}
catch (Exception e)
{
? ?e.printStackTrace();
}2.使用DriverManager.setLoginTimeout()方法來設置超時
這種情況下通常是通過DriverManager.getConnection()方式來建立連接的.
具體實現(xiàn)代碼如下:
Class.forName("oracle.jdbc.driver.OracleDriver");//操作數(shù)據(jù)庫第一步:找到驅(qū)動
DriverManager.setLoginTimeout(3)//表示3秒;
Connection con = DriverManager.getConnection(url,user,passwd);//第二步:建立連接 ? ? ? ?
Statement st = con.createStatement();//第三步:建立一個statement的對象上面也順便把如何測試數(shù)據(jù)庫連接的方法也拋出來了。
java的遠程數(shù)據(jù)庫連接,超時問題
最近開發(fā)短信發(fā)送模塊,一直困擾我的一個問題.就是定期獲得短信發(fā)送狀態(tài),看短信有沒有發(fā)出去,啟動一個線程,但是沒有過多久就死了,出現(xiàn)socke的write錯誤,通過future對超時控制也不行,過段時間久線程就死了,后來更改遠程數(shù)據(jù)庫的設置。
port = 3369? socket = /tmp/mysql.sock? skip-locking? max_allowed_packet = 2M? sort_buffer_size = 512K? net_buffer_length = 8K? read_buffer_size = 256K? read_rnd_buffer_size = 512K? myisam_sort_buffer_size =16M? wait_timeout=1400? interactive_timeout=1400?
增加wait_timeout和interactive_timeout參數(shù),還是出現(xiàn)一樣的問題,時間過了一個月后,在一個偶然的機會是因為socket沒有設置超時造成的所以更改連接語句增加
jdbc:mysql://ip/true&characterEncoding=gbk&connectTimeout=120000&socketTimeout=120000
設置socket的超時為2分鐘,測試通過.運行穩(wěn)定.
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
一文詳解前端和后端的數(shù)據(jù)是如何連接的(基于Spring?Boot、Django或Node.js)
這篇文章主要介紹了前端和后端的數(shù)據(jù)是如何連接的相關資料,文中通過示例介紹的非常詳細,舉例講解的是基于Spring?Boot、Django或Node.js,需要的朋友可以參考下2025-01-01
SpringBoot下使用自定義監(jiān)聽事件的流程分析
事件機制是Spring的一個功能,目前我們使用了SpringBoot框架,所以記錄下事件機制在SpringBoot框架下的使用,同時實現(xiàn)異步處理,這篇文章主要介紹了SpringBoot下使用自定義監(jiān)聽事件,需要的朋友可以參考下2023-08-08

