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

时间:2017-10-11 12:46:40

标签: java web-services ping

您好,我在服务代理中有一个Web服务类,它有一个返回void的方法。我必须检查服务是否已启动并处于活动状态。由于该方法返回void我无法获得服务的状态。有没有办法通过使用或不使用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);
        }
    }   

1 个答案:

答案 0 :(得分:1)

我完全相信你不会在没有返回任何东西的情况下做到这一点。除非返回的服务没问题,否则客户端将不知道请求是否已完成, 否则客户端将等待响应。 所以你必须让你的方法返回一个Response类型的对象。并且您不需要向响应中添加任何内容,只需告诉方法使用

返回200
=INDIRECT ("Init_Data!K"&M25)
相关问题