Brian Fitzpatrick [http://community.jboss.org/people/bfitzpat] modified the 
blog post:

"Testing Web Services..."

To view the blog post, visit: 
http://community.jboss.org/community/jbosstools/blog/2010/05/26/testing-web-services

--------------------------------------------------------------
Hey there...

In the Eclipse world as I've learned more about web services, I've found it 
interesting to see the areas that have needed some work. For example, though 
you have a TCP/IP monitor in Eclipse WTP and a Web Services Explorer that allow 
you to test deployed web services in a UDDI v2 registry and keep track of the 
HTML headers as well as your request and response SOAP calls.

But it doesn't handle UDDI v3 registries and didn't seem to handle RESTful web 
services, so I started tinkering...

The first result of that tinkering is a new Web Service Tester (WST) that works 
with JAX-WS and JAX-RS web services and integrates with the TCP/IP monitor for 
more detailed call information. It's not the prettiest thing in the world, but 
it works.  :) 

Here's an example of how it works...

Let's say there's a public web service out "there" in the vast expanses of the 
web that you want to call. In this case, it's to do a search for relevant lines 
from Shakespeare's plays. And it's a JAX-WS service.

To invoke the service using the WST, you need to know three things at this 
point (and hopefully this will improve over time).

1. The Endpoint URI. In this case it's:  
http://www.xmlme.com/WSShakespeare.asmx http://www.xmlme.com/WSShakespeare.asmx
2. The Action URI. In this case it's:  http://xmlme.com/WebServices/GetSpeech 
http://xmlme.com/WebServices/GetSpeech
3. And the form the SOAP should take... 

Sample SOAP in this case looks like:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
  <soap:Body>
    <GetSpeech xmlns="http://xmlme.com/WebServices";>
      <Request>slings and arrows</Request>
    </GetSpeech>
  </soap:Body>
</soap:Envelope>

So we copy these bits into the WST...
 
http://community.jboss.org/servlet/JiveServlet/showImage/38-1787-3052/wst_shakespeare_1.jpg
  
http://community.jboss.org/servlet/JiveServlet/downloadImage/38-1787-3052/450-206/wst_shakespeare_1.jpg
 
Hit the Invoke button and in the "Response Body" tab you can see the response 
that comes back from Shakespeare's +Hamlet+....
 
http://community.jboss.org/servlet/JiveServlet/showImage/38-1787-3053/wst_shakespeare_2.jpg
  
http://community.jboss.org/servlet/JiveServlet/downloadImage/38-1787-3053/450-209/wst_shakespeare_2.jpg
 
You can open the entire response in the XML Editor from the popup menu. And if 
the response is a traditional SOAP envelope, you can open just the text from 
the operation "Result" in the XML Editor, which simplifies things and gets rid 
of the extraneous SOAP bits.

 
http://community.jboss.org/servlet/JiveServlet/showImage/38-1787-3055/wst_shakespeare_4.jpg
  
http://community.jboss.org/servlet/JiveServlet/downloadImage/38-1787-3055/450-201/wst_shakespeare_4.jpg
 

And in the "Response Header" tab you can see the HTTP header information that 
came back from the WS invocation...
 
http://community.jboss.org/servlet/JiveServlet/showImage/38-1787-3054/wst_shakespeare_3.jpg
  
http://community.jboss.org/servlet/JiveServlet/downloadImage/38-1787-3054/450-209/wst_shakespeare_3.jpg
 
Same rules apply for RESTful (JAX-RS) service invocation... In this case, we're 
invoking a public JAX-RS service to retrieve a list of postal data...
 
http://community.jboss.org/servlet/JiveServlet/showImage/38-1787-3056/wst_rest_1.jpg
  
http://community.jboss.org/servlet/JiveServlet/downloadImage/38-1787-3056/450-420/wst_rest_1.jpg
 
In addition, if you want more fine-grained TCP/IP monitoring, you can hook into 
the WTP TCP/IP Monitor view as well.

In this example, I've configured a monitor for the RESTful service we just 
invoked. That basically creates a proxy that the TCP/IP monitor listens to and 
captures the data from. Though you get the header info and can see the results 
in the tester itself, it's nice to see the time the invocation takes and hook 
into a more traditional monitoring tool.
 
http://community.jboss.org/servlet/JiveServlet/showImage/38-1787-3057/wst_monitor_1.jpg
  
http://community.jboss.org/servlet/JiveServlet/downloadImage/38-1787-3057/450-431/wst_monitor_1.jpg
 

The next thing to do is hook up the tester so it can infer details from a WSDL 
file and possibly even browse a UDDI repository for details.

Let me know what you think! I'd be curious what features you'd like to see in 
this thing. The idea isn't that the tester competes with more fully featured 
tools like soapUI, but provides a quick tester inside JBoss Tools or JBDS to 
help out web service developers.

--Fitz

--------------------------------------------------------------

Comment by going to Community
[http://community.jboss.org/community/jbosstools/blog/2010/05/26/testing-web-services]

_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to