好好生活,努力工作,天天向上!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            46 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks
               在我以前的一篇文章中介紹了使用Apache Wrapper Service這個工具將Java程序注冊成操作系統(tǒng)的服務,如果你采用”實現(xiàn)WrapperListener這個接口并結合wrapper.conf” 這種方式來啟動服務,而且在wrapper.conf配置文件中將wrapper.ignore_signals屬性設置為true,Wrapper Service提供的API是無法正確的判斷服務是否正常的啟動,因為wrapper.ignore_signals屬性用來屏蔽操作系統(tǒng)的消息機制,比如在啟動服務的命令行窗口按Ctrl+C或者關閉啟動服務的命令行窗口的時候,服務也不會停止,這樣可以防止誤操作。
               其實在Wrapper Service這個工具是通過Socket和JVM進行通信(順便說一下,這樣服務能否正常啟動可能會受到本機防火墻的影響,我碰到過這種情況),在Wrapper Service的配置文件中可以指定服務使用的端口(默認為隨機選擇端口,這樣很不可靠),這樣的話可以通過Java的Socket來判斷服務是否可以正常的啟動.
             比如我們的服務使用的端口是3976,判斷的Java代碼是:
            /**
             * 檢查服務器連接狀態(tài)  。
             * 
          @author vwpolo
             * 
          @return String
             
          */
            
          private String getWrapperServiceState() {
              
          try {
                InetSocketAddress socketAddress 
          = new InetSocketAddress("127.0.0.1",3976);
                Socket socket 
          = new Socket();
                socket.connect(socketAddress,
          60000);
                
          return "已啟動";
              }
          catch (Exception e) {
                
          return "已經(jīng)停止";
              }
            }
            
             測試代碼: 

          System.out.println("服務啟動狀態(tài): "+ getWrapperServiceState());


          posted on 2009-09-23 12:18 VWPOLO 閱讀(1739) 評論(0)  編輯  收藏 所屬分類: Java 技術
          主站蜘蛛池模板: 扎赉特旗| 龙州县| 香格里拉县| 柘城县| 民县| 塔城市| 法库县| 焦作市| 祁东县| 汉寿县| 贺州市| 陆丰市| 丹棱县| 福海县| 通江县| 南召县| 金乡县| 万年县| 凌源市| 武邑县| 开阳县| 兴宁市| 阿城市| 宁蒗| 垦利县| 永嘉县| 尼玛县| 岢岚县| 石泉县| 锦州市| 沙坪坝区| 正镶白旗| 扶沟县| 贞丰县| 两当县| 普洱| 白沙| 沙雅县| 新竹市| 任丘市| 宁晋县|