【问题标题】:How to Ping a web service method which is having return type void如何 Ping 返回类型为 void 的 Web 服务方法
【发布时间】: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


【解决方案1】:

我完全确定您不能在不返回任何东西的情况下执行此操作。除非返回的服务正常,否则客户端将不知道请求是否完成, 否则客户端将等待响应。 所以你必须让你的方法返回一个响应类型的对象。而且您不需要添加任何响应,只需告诉方法返回 200

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多