Apache CXF: Open Source Service Framework - The Client
Earlier this year I posted Apache CXF: Open Source Service Framework to demonstrate how easy it is to create a simple echo Web Service with Apache CXF. Now I would like to post an example client for that service using Apache CXF.
First, we need our dependencies: (download them here)
... commons-logging-1.1.1.jar cxf-2.1.2.jar FastInfoset-1.2.2.jar geronimo-activation_1.1_spec-1.0.2.jar geronimo-annotation_1.0_spec-1.1.1.jar geronimo-javamail_1.4_spec-1.3.jar geronimo-jaxws_2.1_spec-1.0.jar geronimo-servlet_2.5_spec-1.2.jar geronimo-stax-api_1.0_spec-1.0.1.jar geronimo-ws-metadata_2.0_spec-1.1.2.jar jaxb-api-2.1.jar jaxb-impl-2.1.7.jar jaxen-1.1.jar jdom-1.0.jar jetty-6.1.9.jar jetty-util-6.1.9.jar neethi-2.0.4.jar saaj-api-1.3.jar saaj-impl-1.3.jar spring-beans-2.0.8.jar spring-context-2.0.8.jar spring-core-2.0.8.jar spring-web-2.0.8.jar stax-utils-20060502.jar wsdl4j-1.6.2.jar wstx-asl-3.2.4.jar xml-resolver-1.2.jar XmlSchema-1.4.2.jar ...
Then we need the Echo Service interface (this should be provided for us from our service providers) :
... package com.thejavajar.service; import javax.jws.WebService; @WebService public interface EchoServiceIfc { public String echo(String text); } ...
The last piece of the pie is our client that makes the call out to http://localhost:9000/echo, where our service lives, in order to invoke an operation on the service.
... package com.thejavajar.client; import org.apache.cxf.frontend.ClientProxyFactoryBean; import com.thejavajar.service.EchoServiceIfc; public class EchoClient { public static void main(String[] args) { String request = new String("test 1"); ClientProxyFactoryBean factory = new ClientProxyFactoryBean(); factory.setServiceClass(EchoServiceIfc.class); factory.setAddress("http://localhost:9000/echo"); EchoServiceIfc client = (EchoServiceIfc) factory.create(); System.out.println("Sending: " + request); String response = client.echo(request); System.out.println("Returned: " + response); System.exit(0); } } ...
All we need to do is run our main method in our EchoClient class and we will get something like:
... Sending: test 1 Returned: test 1 ...
That’s all folks. Obviously, this example, along with our previously posted service, is not solving complex problems that we might face in our current Java development endeavors but it provides us with peak into Apache CXF and opens up more people to a technology that I enjoy working with.
Eclipse Project: apache-cxf-echo-client.zip


