• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2259
  • Last Modified:

How do I Check whether the Web Service is up

Hi, I am sending requests to a webservice which exposes methods queryCustomer(), createCustomer(), deleteCustomer(). Before sending a request
I want to make sure that the WebService is up. If the WebService is down, I would queue up the order and wait for the WebService to come up. If I don't make this check and send the order to the WebService (assuming that Service is up), the order will fail and then the upstream system (my application sit between an upstream system and a downstream system) has to sned the order again, which I don't want to happen.

Now the approach I have thought is to send a dummy query request (using queryCustomer) before sending the actual order. If the query is successful, that means the WebService is up, now I can send the actual request. If the query response is Null, it means the WebService is down, and I need to queue the request.

The problem with this approach is that every hit on the web service bears some cost to us, so I want to avoid sending dummy requests.

Is there a way I can check whether the WebService is up without actually calling a method? Can it be achieved by trying to get a reference to endpoint URL of the WebService. When I code (I am using axis 1.4 libraries and used WSDL2Java to generate the binding classes from the WSDL):

samplePort = service.getCustomerPort(url);  

will this call be successful when the Service is down? If the call fails when the Service is down, I can use this as a check without sending the query request to the WebService.

Any suggestions on this please?

Thanks

0
LeoKris
Asked:
LeoKris
  • 5
  • 3
1 Solution
 
ahoffmannCommented:
if the webservice does not provide its own health check, you loose
you only may call the ?wsdl to check if this part of the application is reachable at all
if the WSDL file is served by the web service itself, you chances are high tht the web service is alive
0
 
LeoKrisAuthor Commented:
what do you mean that I call the "?wsdl", because I am calling it from my java code and not typing the URL in explorer.

I think making a dummy call to the webservice is the only way.

Thanks anyways.
0
 
ahoffmannCommented:
> what do you mean that I call the "?wsdl
I meant to make a request to a proper  URL with ?wsdl query string using your java API's HttpRequest method.
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
LeoKrisAuthor Commented:
Sounds good...let me try.. I will let you know if it works.
0
 
LeoKrisAuthor Commented:
I am trying this code:

String requestUrl= "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";
            
            try {
            
                  URL url = new URL(requestUrl.toString());
           
                  
                         HttpURLConnection aConnection = (HttpURLConnection) url.openConnection();
      BufferedReader buffer = new BufferedReader(new InputStreamReader(aConnection.getInputStream()));

                       String line = "";
                       while ((line = buffer.readLine()) != null)
                                                   {
                           System.out.println(line);
                       }

But when I run the code, I get this exception:

java.net.UnknownHostException: www.w3schools.com

I can access this WSDL by typing the url in my explorer. Any clue on this?

Thanks
0
 
LeoKrisAuthor Commented:
thanks for help
0
 
ahoffmannCommented:
> java.net.UnknownHostException: www.w3schools.com
try to set the Host: header to that www.w3schools.com
0
 
deep_scorpionCommented:
Hi Leokris,

I am developing a similer tool where I need to check if the webservice is up or down.
can you share your code for the same?
0
 
LeoKrisAuthor Commented:
Hi deep,
   my code is specific to the webservice I am consuming. I didn't go with the "fetch-the-wsdl" technique. I actually invoked the service passing dummy parameter (customer id for a non existing customer), which returns an error code as "101- Customer Not Found". This confirms that the WebService is Up.

Thanks

Leo
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now