如何Ping一个具有返回类型的Web服务方法void

如何Ping一个具有返回类型的Web服务方法void

问题描述:

嗨我有一个服务代理中的Web服务类,它有一个返回void的方法。我必须检查服务是否正常运行。由于该方法返回void,我无法获得服务的状态。有没有办法通过使用或不使用ping来检查此Web服务方法的状态?如何Ping一个具有返回类型的Web服务方法void

下面是我的web服务方法,它有返回类型void。此Web服务方法将执行一些验证并触发另一个方法,以便它不会返回任何值。

@GET 
     @Path("/triggers/{name}") 
     public void triggerMethod(@PathParam("name") String triggername, @Context HttpServletRequest aHttpRequest){ 
      //code 

    } 

以下是ping功能已存在的代码,但它会检查响应的状态。此代码适用于webservices方法,该方法是returnig响应并接受APPLICATION_JSON。

private void invoketrigger(ServiceDataDTO myData){ 

      try{ 
     target.request().headers(getRequestHeaders()).accept(MediaType.APPLICATION_JSON).get(); 
      Client client = ClientBuilder.newClient(); 
        WebTarget target = client.target(myData.getServiceURI()); 
        Response response = target.request().headers(getRequestHeaders()).accept(MediaType.APPLICATION_JSON).get(); 
        if(response.getStatus() == 200){ 
         status = "green"; 
      } 
    } 




The code which I tried for my method is given below. 

private void invoketrigger(ServiceDataDTO myData){ 

     try{ 
    target.request().headers(getRequestHeaders()).accept(MediaType.APPLICATION_JSON).get(); 
     URL url = new URL(myData.getServiceURI()); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setConnectTimeout(10000); 
     connection.setReadTimeout(10000); 
     connection.setRequestMethod("GET"); 
     connection.connect(); 
     int response = connection.getResponseCode(); 

     if(response == 200){ 
      myData.setServiceStatus(ServicesDashboardConstants.STATUS_OK); 
     } 
     }catch(Exception e){ 
      System.out.println(e); 
     } 
    } 
+0

response.ok应返回 –

我完全相信,如果不返回任何内容,您无法做到这一点。客户端将不知道请求是否完成,除非返回的服务是OK,否则客户端将等待响应。 所以你必须让你的方法返回一个Response类型的对象。并且您不需要添加任何内容以响应仅告诉返回200的方法

response.ok (200) ; // this will tell the method what is the status code response