具體情況是這樣,我在自己的雲服務器部署了一個javaweb項目,該項目主要功能就是對數據庫的數據進行展示,但是每次剛發布后都能正常運行,而到了第二天再去訪問這個項目就連接不上數據庫了,查了資料才知道原來mysql的連接會默認在8小時無操作后被銷毀,查解決辦法,網上很多帖子都說吧那個默認銷毀時長改為一年就行了,但這種方法肯定是會影響服務器運行速度的,對此我自己是通過開辟一個線程解決的,如果這個解決方法會有什么隱患也希望路過的大佬可以指點一下。
具體做法:
在工具類和數據庫創建連接后,開辟一個新線程,每隔一段時間訪問一下數據庫但又不進行其他操作,總而言之就是是使得對數據庫的無操作時間不超過8小時,代碼如下:
final long timeInterval = 1000*60*4;//設置執行周期為4小時 Runnable runnable = new Runnable() { public void run() { while (true) { Statement statement; try { statement = conn.createStatement(); //conn為數據庫連接 //要執行的SQL語句 String sql = "select * from info limit 1"; statement.executeQuery(sql); } catch (SQLException e1) { e1.printStackTrace(); } try { Thread.sleep(timeInterval); } catch (InterruptedException e) { e.printStackTrace(); } } } }; Thread thread = new Thread(runnable); thread.start();