天天看點

簡單的參數熱備份

簡單的說,就是一個程式中的某個參數可以有多個取值,各個值之間有優先級。運作 時,先使用優先級高的參數值;如果該參數值失效,再自動調用優先級低的參數值。

在我的項目裡,有一個調用遠端服務的方法,遠端服務在多個伺服器上都部署、運作起來了。是以,遠端服務的位址有好幾個。運作時,先使用伺服器速度快 的那個位址;如果連接配接不上,再使用後備位址。

主要的代碼如下:

/** 傳回可用的URL

* @return

*/

final private String findAvailableURL(){

   System.out.println("findAvailableURL===="+url1+url2+url3);

   if(isAvailable(url1)){

    return url1;

   }else if(isAvailable(url2)){

    return url2; 

   }else if(isAvailable(url3)){

    return url3;

   }else{

    return null;

   }

}

/* 查找可用的位址

private synchronized boolean isAvailable(String anUrl){

   if(Utils.nullOrBlank(anUrl)){

    return false;

    int count = 0;

    while(count<5){

     try{

      this.url = new URL(anUrl);

      connection = (HttpURLConnection)url.openConnection();

      int state = connection.getResponseCode();

      if(state==200){

       return true;

      }

      System.out.println("isAvailable==state="+state);

     }catch(Exception ex){

      count ++;

      continue;

     }

    }

同樣的邏輯可以用在其它參數上。對每個參數做一個簡單的判斷(本例中是判斷能否打開遠端服務的連結),判斷通過,則使用該參數,否則的話,進入第二 個參數的判斷。

本文轉自 斯然在天邊 51CTO部落格,原文連結:http://blog.51cto.com/winters1224/799034,如需轉載請自行聯系原作者

繼續閱讀