嗨,我在服务代理中有一个Web服务类,该类具有返回void的方法。我必须检查服务是否已启动并处于活动状态。由于该方法返回void,因此我无法获取服务状态。是否可以通过使用ping或不使用ping来检查此Web服务方法的状态?
下面是我的webservice方法,其返回类型为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);
}
}
最佳答案
我完全确定,如果不返回任何内容,您将无法做到这一点。除非返回的服务正常,否则客户端不会知道请求是否完成,
否则,客户端将等待响应。
因此,您必须使您的方法返回Response类型的对象。而且您不需要添加任何响应即可,只需告诉该方法返回200
response.ok (200) ; // this will tell the method what is the status code response