【发布时间】:2018-03-23 03:34:49
【问题描述】:
您好,我在服务代理中有一个 Web 服务类,它有一个返回 void 的方法。我必须检查服务是否已启动并处于活动状态。由于该方法返回 void 我无法获得服务的状态。有没有办法通过ping或者不使用ping来检查这个web service方法的状态?
下面是我的 webservice 方法,它的返回类型为 void。此 Web 服务方法将进行一些验证并触发另一个方法,因此它不会返回任何值。
@GET
@Path("/triggers/{name}")
public void triggerMethod(@PathParam("name") String triggername, @Context HttpServletRequest aHttpRequest){
//code
}
下面是 ping 功能的代码,但它会从响应中检查状态。此代码适用于返回响应并接受 APPLICATION_JSON 的 Web 服务方法。
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.ok 应该返回
标签: java web-services ping