Module Overview
GroovyWS is taking over GroovySOAP as CXF replaces XFire. The major difference here is that GroovyWS is using Java5 so if you need to stick to 1.4 please continue to use GroovySOAP.
Warning: Most of the documentation is adapted from the former GroovySOAP documentation and will improve in the future. I tried to make it as accurate as possible but feel free to report any error.
Warning: GroovyWS is Java5 dependent (due to CXF) and has been tested using groovy-1.5.
Warning: In order to use GroovyWS, you must ensure that GroovySOAP is not in your classpath (~/.groovy/lib)
Download
Distributions
GroovyWS is available in two packages:
- as a full jar containing all CXF JARs and dependencies. It is located here
- as a jar containing all except the jetty server and servlet files. It aimed at being deployed into third party containers. It is located here
Installing
You just need to place the above mentioned JAR file in your ${user.home}/.groovy/lib directory.
Pre-requisites
As the pre-requisites are quite tricky to handle, an all-in-one JAR file is distributed
Documentation
The javadoc is here
Getting Started
GroovyWS comes with 2 sets of APIS that are briefly described below using a simple example.
When your service is using groovy beans on the server side, you may want to control the fields that are serialized. This is done using a small xml file located next to your script. A small example is demonstrating this:
Complex types
The Server
The Client
The good think here is that the client does not have to know about the Book class. It is automatically generated during the proxy creation time and can be used by your client. Here it is located in the defaultnamespace package since no package was used on the server side.
Here is how the client looks like now:
Iterating over the books is slightly more complicated since SOAP wrap the arrays in an element (in our case ArrayOfBook). Therefore you have to extract a field from that element. In our case:
More Information
Using proxies
If you are using a proxy for accessing internet, you can use the following environment variables to get rid of it:
- proxyHost
- proxyPort
- proxy.user
- proxy.password
or directly use the following in your code:
Using basic authentication
If your server use basic authentication, you need to set up the following properties:
- http.user
- http.password
or directly use
Setting a time out value
If your want to set a time out value for the connection to the server just use:
Using SOAP 1.2 (in test/review)
If your server is proposing SOAP 1.2 endpoints, then you can use:
TODO
If you have ideas how the API should look, do not hesitate to post on the user list ;-
Known problems (and work around)
Demos with public web services
Currency rate calculator
There exist a lot of web-services available for testing. One which is pretty easy to evaluate is the currency rate calculator from webservicex.net.
Here is a small swing sample that demonstrate the use of the service. Enjoy !
TerraServer-USA by Microsoft
TerraServer supports a Tiling Web Service that enables you to build applications that integrate with USGS imagery found on their site. Here is a sample of what you can achieve.
will give:
Developers
Guillaume Alleon
Source Control
http://svn.codehaus.org/gmod/groovyws
Building
The build process is using gradle. In order to build the sources from svn, just run:
in the directory conting the source tree.
Contributing
Community
Mailing List(s)
use user@groovy.codehaus.org
Issue tracker
There is a GroovyWS http://groovy.codehaus.org/GroovyWS category in JIRA
Articles
A nice article from Geertjan's blog with several examples: http://blogs.sun.com/geertjan/entry/groovy_web_service
An article explaining the difference between the different WSDL styles http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/