天天看点

简单的参数热备份

简单的说,就是一个程序中的某个参数可以有多个取值,各个值之间有优先级。运行 时,先使用优先级高的参数值;如果该参数值失效,再自动调用优先级低的参数值。

在我的项目里,有一个调用远程服务的方法,远程服务在多个服务器上都部署、运行起来了。因此,远程服务的地址有好几个。运行时,先使用服务器速度快 的那个地址;如果连接不上,再使用后备地址。

主要的代码如下:

/** 返回可用的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,如需转载请自行联系原作者

继续阅读