<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)  編輯  收藏
    主站蜘蛛池模板: 免费无码精品黄AV电影| 亚洲日韩精品一区二区三区无码| 国产又大又黑又粗免费视频| 亚洲综合精品网站| 亚洲av日韩av不卡在线观看| 好湿好大好紧好爽免费视频| 亚洲免费无码在线| 无码精品人妻一区二区三区免费看 | 国产99久久久国产精免费| 免费不卡在线观看AV| 91天堂素人精品系列全集亚洲 | 国产亚洲精品成人a v小说| 日韩大片在线永久免费观看网站| 美女18毛片免费视频| 97在线视频免费公开观看| 亚洲精品美女在线观看| 免费A级毛片无码无遮挡内射| 亚洲婷婷五月综合狠狠爱| 国产在线一区二区综合免费视频 | 亚洲日韩精品一区二区三区| 欧洲人免费视频网站在线| 亚洲视频在线观看地址| 亚洲国产免费综合| 好吊妞788免费视频播放| 爱情岛论坛亚洲品质自拍视频网站| 亚洲免费在线视频观看| 亚洲午夜成人精品无码色欲| 亚洲成a人一区二区三区| 亚洲人成网站999久久久综合| 国产精品手机在线亚洲| 亚洲综合色自拍一区| 亚洲熟妇av一区| 午夜免费不卡毛片完整版| 日日躁狠狠躁狠狠爱免费视频| 成年私人影院免费视频网站| 亚洲精品国产福利片| 国产免费69成人精品视频 | 337p欧洲亚洲大胆艺术| 日韩免费无码一区二区视频| 中文字幕在线免费视频| 青青草原亚洲视频|