如何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);
}
}
答
我完全相信,如果不返回任何内容,您无法做到这一点。客户端将不知道请求是否完成,除非返回的服务是OK,否则客户端将等待响应。 所以你必须让你的方法返回一个Response类型的对象。并且您不需要添加任何内容以响应仅告诉返回200的方法
response.ok (200) ; // this will tell the method what is the status code response
response.ok应返回 –