您好,登錄后才能下訂單哦!
這篇文章主要講解了“數(shù)據(jù)庫(kù)連接超時(shí)java處理的方式有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“數(shù)據(jù)庫(kù)連接超時(shí)java處理的方式有哪些”吧!
在測(cè)試一套數(shù)據(jù)庫(kù)是否能夠連接上的過程中,我們就會(huì)遇到這樣的一種情況,當(dāng)不能連接的時(shí)候會(huì)存在代碼運(yùn)行時(shí)間超級(jí)長(zhǎng)的問題,這樣的話在頁(yè)面上會(huì)存在卡死的現(xiàn)象,為了解決這個(gè)問題
總結(jié)了下面兩種方式:
這個(gè)主要是通過使用socket.connect()方法建立連接,其連接主要需要用到ip和相關(guān)端口號(hào)(記得是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("讀取超時(shí)"); }else{ System.out.println("連接超時(shí)"); return null; } } catch (Exception e) { e.printStackTrace(); }
這種情況下通常是通過DriverManager.getConnection()方式來建立連接的.
具體實(shí)現(xiàn)代碼如下:
Class.forName("oracle.jdbc.driver.OracleDriver");//操作數(shù)據(jù)庫(kù)第一步:找到驅(qū)動(dòng) DriverManager.setLoginTimeout(3)//表示3秒; Connection con = DriverManager.getConnection(url,user,passwd);//第二步:建立連接 Statement st = con.createStatement();//第三步:建立一個(gè)statement的對(duì)象
上面也順便把如何測(cè)試數(shù)據(jù)庫(kù)連接的方法也拋出來了。
最近開發(fā)短信發(fā)送模塊,一直困擾我的一個(gè)問題.就是定期獲得短信發(fā)送狀態(tài),看短信有沒有發(fā)出去,啟動(dòng)一個(gè)線程,但是沒有過多久就死了,出現(xiàn)socke的write錯(cuò)誤,通過future對(duì)超時(shí)控制也不行,過段時(shí)間久線程就死了,后來更改遠(yuǎn)程數(shù)據(jù)庫(kù)的設(shè)置。
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)一樣的問題,時(shí)間過了一個(gè)月后,在一個(gè)偶然的機(jī)會(huì)是因?yàn)閟ocket沒有設(shè)置超時(shí)造成的所以更改連接語(yǔ)句增加
jdbc:mysql://ip/true&characterEncoding=gbk&connectTimeout=120000&socketTimeout=120000
設(shè)置socket的超時(shí)為2分鐘,測(cè)試通過.運(yùn)行穩(wěn)定.
感謝各位的閱讀,以上就是“數(shù)據(jù)庫(kù)連接超時(shí)java處理的方式有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)數(shù)據(jù)庫(kù)連接超時(shí)java處理的方式有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。