<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
    編程中Java應用常需要訪問Tomcat,Weblogic等中間件,如果因為遠程機器沒有開機或是中間件服務未啟動而導致服務不可用,則程序會拋出異常。如果事先對這些端口進行檢測會更有利與我們診斷錯誤,下面就是一個診斷遠程端口的類:
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    import org.apache.log4j.Logger;

    import com.alpha.model.TPClientModel;
    import com.alpha.util.DlgUtil;

    /**
     * 這個類僅本類使用
     * 
    @author 何楊
     * @date 2009-11-5
     * @time 下午03:15:20
     
    */
    class IpPort{
        String ip;
        
    int    port;
    }

    /**
     * 遠程端口探測器,判斷遠程端口是否打開
     * 
     * 
    @author 何楊
     * @date 2009-11-5
     * @time 下午02:48:56
     
    */
    public class RemotePortTestor{    
        
    public static Logger logger = Logger.getLogger(TPClientModel.class);
        
        
    // 測試項目集合
        private List<IpPort> testItems;
        
        
        
    /**
         * 構造函數
         * 
         * 
    @param fileName
         * 
    @param keys
         
    */
        
    public RemotePortTestor(String fileName,List<String> keys){
            Properties prop
    =new Properties();
            
    try {
                prop.load(
    new FileInputStream(fileName));
                
                testItems
    =new ArrayList<IpPort>();
                
    for(String key:keys){
                    String value
    =prop.getProperty(key);
                    testItems.add(getIpPortAddr(value));
                }            
            } 
    catch (FileNotFoundException e) {
                logger.error(e);
                e.printStackTrace();
            } 
    catch (IOException e) {
                logger.error(e);
                e.printStackTrace();
            }
        }
        
        
    /**
         * 檢測遠端端口,全部通過返回真
         * 
         * 
    @return
         * 創建人:何楊
         * 創建日期:2009-11-5
         * 創建時間:下午03:32:34
         
    */
        
    public boolean testRemotePorts(){
            
    for(IpPort ipPort:testItems){
                
    if(testRemotePort(ipPort.ip,ipPort.port)==false){
                    
    return false;
                }            
            }
            
            
    return true;
        }
        
        
    /**
         * 從URL中得到IP地址和端口
         * 
         * 
    @param url
         * 
    @return
         * 創建人:何楊
         * 創建日期:2009-11-5
         * 創建時間:下午03:32:55
         
    */
        
    private IpPort getIpPortAddr(String url){
            IpPort ipPort
    =new IpPort();
            
            String ip
    =getMatchedString("(//)(.*)(:)",url);
            ipPort.ip
    =ip;
            
            String port
    =getMatchedString("(:)(\\d+)",url);
            ipPort.port
    =Integer.parseInt(port);
            
            
    return ipPort;
        }
        
        
    /**
         * 檢測端口是否能連接上
         * 
         * 
    @param ip
         * 
    @param port
         * 
    @return
         * 創建人:何楊
         * 創建日期:2009-11-5
         * 創建時間:下午03:33:20
         
    */
        
    public static boolean testRemotePort(String ip,int port){        
            
    try {
                Socket s
    =new Socket(ip,port);
                System.out.println(s.getLocalAddress()
    +"可以訪問"+ip+"上的端口"+port+"的服務.");
                s
    =null;
                
    return true;
            } 
    catch (Exception e) {
                System.out.println(
    "無法取得"+ip+"上的端口"+port+"的服務.");
                DlgUtil.popupErrorDialog(
    "無法取得"+ip+"上的端口"+port+"的服務!\r\n,請確認服務可用后再執行本程序!");
                            
                e.printStackTrace();
                logger.error(e);
                
    return false;
            }    
        }
        
        
    /**
         * 從target找到regex能代表的文字
         * 
         * 
    @param regex
         * 
    @param target
         * 
    @return
         * 創建人:何楊
         * 創建日期:2009-11-5
         * 創建時間:下午03:33:41
         
    */
        
    public static String getMatchedString(String regex,String target){
            Pattern pattern
    =Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
            
            Matcher matcher
    =pattern.matcher(target);
            
            
    while(matcher.find()){
                
    return matcher.group(2);
            }
            
            
    return null;
        }
        
        
    /**
         * 測試入口
         * 
         * 
    @param args
         * 創建人:何楊
         * 創建日期:2009-11-5
         * 創建時間:下午03:34:06
         
    */    
        
    public static void main(String[] args){
            List
    <String> ls=new ArrayList<String>();
            ls.add(
    "webservice.url");
            ls.add(
    "jmsbroker.url");
            
            String properitesFile
    =TPClientModel.class.getResource("/remoteservice.properites").getFile().toString();
            RemotePortTestor rt
    =new RemotePortTestor(properitesFile,ls);
            System.out.println(rt.testRemotePorts());
        }
    }

    remoteservice.properites的內容如下:
    webservice.url=http://localhost:8080/SampleWebService/services/service
    jmsbroker.url=tcp://192.168.0.110:61616

    以上程序會自動從上述URL中找出IP地址和端口,然后用Socket連接過去看是否能聯通,主要使用了正則表達式和Socket,比較簡單,大家可自行閱讀理解。


    posted on 2009-11-05 16:29 何楊 閱讀(491) 評論(0)  編輯  收藏
    主站蜘蛛池模板: 久久91亚洲人成电影网站| 亚洲性久久久影院| 亚洲精品在线播放| 女同免费毛片在线播放| 亚洲人成精品久久久久| 国产午夜精品久久久久免费视 | 日韩色日韩视频亚洲网站| 精品久久久久久久免费人妻 | 成全在线观看免费观看大全 | 午夜神器成在线人成在线人免费| 亚洲中文字幕久在线| 99久久这里只精品国产免费| 99亚偷拍自图区亚洲| 免费一区二区三区四区五区| 一区二区免费在线观看| 亚洲精品国产精品乱码不99| 国产精品99精品久久免费| 亚洲色图古典武侠| 日本免费福利视频| 久久最新免费视频| 亚洲色图黄色小说| 国产jizzjizz视频全部免费| 国产日韩AV免费无码一区二区三区| 国产精品亚洲A∨天堂不卡| 18女人水真多免费高清毛片| 中文字幕在线观看亚洲视频| 亚洲国产主播精品极品网红| 波多野结衣免费一区视频 | 香蕉视频免费在线播放| 亚洲精品乱码久久久久久蜜桃不卡 | 久久精品国产96精品亚洲| 99re6在线精品视频免费播放| 亚洲国产成人91精品| 国产在线观看免费不卡| 免费看黄的成人APP| 亚洲一区动漫卡通在线播放| 亚洲男人天堂2020| 免费福利视频导航| 一级特黄a大片免费| 亚洲毛片免费观看| 亚洲成?v人片天堂网无码|