關於解決資料庫網路斷開重新連線的嘗試
阿新 • • 發佈:2019-02-17
最近遇到一個比較噁心的問題。有一個專案,在啟動的時候,需要先啟動資料庫,再啟動tomcat,這樣子程式才可以連線上。然而,tomcat和資料庫是分開在兩臺不同的伺服器上,而且管理這個伺服器的人定死了了一套約定,一定是先開啟tomcat所在的伺服器,在開啟資料庫所在的伺服器,導致了程式一開始就卡死。然後那群人寧願重啟一次tomcat,也不願意去改這個開機的順序。
由於專案之前是使用bonecp的連線池,不太好把這個給改掉,雖然現在很多連線池都是支援斷線重連的,但是不能改啊!!!
好吧你既然那麼固執,只可以用程式碼解決了。開始別人說用遞迴,然後記憶體很果斷的溢位了。最後乾脆加了個迴圈和延遲,暫時把這個問題給解決了。。。
// 初始化連線池 public void init() { while (true) { try { // 設定資料庫連線池 connectionPool = new BoneCP(this.config()); this.getConn(); break; } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("無法配置連線池!"); try { Thread.sleep(3000); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }