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