判斷Wrapper Service註冊的服務是否啟動

來源:互聯網
上載者:User

在我以前的一篇文章中介紹了使用Apache Wrapper Service這個工具將Java程式註冊成作業系統的服務,如果你採用”實現WrapperListener這個介面並結合wrapper.conf” 這種方式來啟動服務,而且在wrapper.conf設定檔中將wrapper.ignore_signals屬性設定為true,Wrapper Service提供的API是無法正確的判斷服務是否正常的啟動,因為wrapper.ignore_signals屬性用來屏蔽作業系統的訊息機制,比如在啟動服務的命令列視窗按Ctrl+C或者關閉啟動服務的命令列視窗的時候,服務也不會停止,這樣可以防止誤操作。

其實在Wrapper Service這個工具是通過Socket和JVM進行通訊(順便說一下,這樣服務能否正常啟動可能會受到本機防火牆的影響,我碰到過這種情況),在 Wrapper Service的設定檔中可以指定服務使用的連接埠(預設為隨機播放連接埠,這樣很不可靠),這樣的話可以通過Java的Socket來判斷服務是否可以正常的啟動.

比如我們的服務使用的連接埠是3976,判斷的Java代碼是:

/**
    * 檢查伺服器串連狀態。
    * @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 "已經停止";
     }
   }

測試代碼:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.