2011-12-16 53 views
2

我的任務是檢查我的程序是否在服務器上運行正常或不是。這種情況是這樣的:一個URL被髮送到正在不斷運行的程序,如果狀態正常,請回復狀態。我無法理解該過程如何執行。可以任何人解釋。當發送一個URL時發送一個XML響應

+0

是您的應用程序部署在Web服務器或者它只是一個普通的Java程序?如果是前者,只需編寫一個servlet或者一些帶參數的響應,然後用200返回OK。如果是應用程序,則可以使用Jsch並像在本地計算機上那樣傳遞URL並查找響應。 – Nishant 2011-12-16 06:33:15

+0

它將被部署在web服務器上。請給我一個例子。這將有幫助 – Rookie 2011-12-16 06:38:55

回答

2

好的,我假設你想爲你的應用程序寫一些健康檢查頁面。所以在這裏。

package test.naishe.so; 

public class HealthCheck extends HttpServlet { 

    private static final long serialVersionUID = 940861886429788526L; 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 

     int response = HttpServletResponse.SC_INTERNAL_SERVER_ERROR; 

     boolean checkServices = true; 
     //optional: assumming you wanted to do health check on various services (eg. DB service) and have a utility class for that 
     checkServices = CheckServices.checkAll(); 

     if(checkServices) 
      response = HttpServletResponse.SC_OK; 

     String out = 
      "<healthCheck>" + 
      "<services>" + 
       (checkServices?"OK":"ERROR") 
      "</services>" + 
      "</healthCheck>" 
      ; 

     resp.setStatus(response); 
     resp.getWriter().println(out); 

    } 
} 

在web.xml添加如下內容:

<servlet> 
    <servlet-name>healthCheck</servlet-name> 
    <servlet-class>test.naishe.so.HealthCheck</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>healthCheck</servlet-name> 
    <url-pattern>/check_health</url-pattern> 
    </servlet-mapping> 

你可以從<base_url>/check_health在本地計算機上訪問該頁面,http://localhost[:port][/app_name]/check_health