(Tutorial) Web Services with Spring 2.5 and Apache CXF 2.0
Web Services
with Spring 2.5 and Apache CXF 2.0
-
Quickly create web services in Spring 2.5 using Apache CXF 2.0, a.k.a. XFire 2.0.
In this tutorial I explain how to get a web service up and running using Spring 2.5 and Apache CXF 2.0, which is the combination of Celtix and XFire and is considered XFire 2.0. (I don't know what the Celtix team would say about that, but that's what the XFire site says.) Here I just treat the web service itself; to learn about consuming the web service using Spring and CXF, please see the article Make Web Services Transparent with Spring 2.5 and Apache CXF 2.0.
CXF supports both WSDL-first and Java-first web service development. This article takes the Java-first approach.
Project Setup
The first thing you'll need to do is download CXF from the Apache CXF site. At the time of this writing the project is in incubator status and the latest version is 2.0.4. That's the version I'm using.
You'll also find it useful to know about the section of the CXF user documentation that deals with writing a service with Spring, but currently the docs describe how to integrate with Spring 2.0, and since I want to integrate with Spring 2.5, there are some differences worth highlighting along the way.
Also, the docs describe a "Hello, World" web service that just returns a string, and in this tutorial we want to go a little further than that and actually do a class databinding.
Here are the service-side dependencies
you'll need. Inside the distribution there is a file called WHICH_JARS
that describes in a little more detail what the JARs are for and which ones
you'll really need, if you're interested in that. But the following is
essentially the list given in the user docs.
CXF itself
-
cxf-2.0.4-incubator.jar
CXF dependencies
Note that for CXF 2.0.4 the documented
dependencies are almost but not quite the same as the JARs that are actually
included in the distribution, once again, at the time of this writing (February
2008). Specifically the stax, neethi and XMLSchema
JARs are not the ones listed. Here's the corrected list for CXF 2.0.4:
-
commons-logging-1.1.jar -
geronimo-activation_1.1_spec-1.0-M1.jar(or Sun's Activation jar) -
geronimo-annotation_1.0_spec-1.1.jar(JSR 250) -
geronimo-javamail_1.4_spec-1.0-M1.jar(or Sun's JavaMail jar) -
geronimo-servlet_2.5_spec-1.1-M1.jar(or Sun's Servlet jar) -
geronimo-stax-api_1.0_spec-1.0.jar -
geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181) -
jaxb-api-2.0.jar -
jaxb-impl-2.0.5.jar -
jaxws-api-2.0.jar -
neethi-2.0.2.jar -
saaj-api-1.3.jar -
saaj-impl-1.3.jar -
wsdl4j-1.6.1.jar -
wstx-asl-3.2.1.jar -
XmlSchema-1.3.2.jar -
xml-resolver-1.2.jar
Aegis dependencies
In addition to the above, you will need to
add jdom-1.0.jar since Aegis databinding uses it.
Spring dependencies
In this case ignore what's in the CXF documentation, because we're integrating with Spring 2.5 instead of Spring 2.0. I'm going to assume that you have Spring 2.5 already set up on your web services project, including Hibernate or anything else that your web services will need on the implementation side.
Just in case you were wondering, you don't
need the Spring MVC module's DispatcherServlet as CXF comes with
its own servlet, org.apache.cxf.transport.servlet.CXFServlet.
OK, that should be good for basic project setup. Let's write a simple service.
Courtesy : wheelersoftware.com
- guru's blog
- Login to post comments
