Thursday, 3 December 2009

Web Service Definition with CXF, Maven, Spring

For a long time I have never designed and implemented a web service. I think for 2 years I have been using Remoting in my projects. Two days ago my company needed a small web service. The web service method would take a collection of entity as a parameter, then operate on the entities and return the operated collection back. I implemented the web service using Eclipse platform's web service tool. I have created an interface and the implementation class. Then I right clicked on the implementation class and selected the Web Service link, then Create Web Service link.


Then a pop up window opened and when I clicked the Next button I received a warning message below.


I recognized that axis needs custom object's definition in the wsdd file. And it does not support List, Set, Vector.. vs types of java. If I would define whole the custom objects to a definition file I would suffer from that.

I searched for web service tools for a while. I found Apache's open source project CXF. I sometimes heard about cxf from my brother. I was new to CXF and I needed a sample Hello World project to see the steps of creating a new project. In general, people type blogs about new technologies, but they don't provide a sample project implementation. I am suffering about this problem. Some of bloggers paste their code blocks but sometimes they are not enough. Yesterday night I have found a blog about CXF from
http://www.benmccann.com/dev-blog/web-services-tutorial-with-apache-cxf/
. Thanks to Benjamin.

Then I created a dynamic web project, enabled maven, enabled spring to the project. I created the operation classes, client class and tested the project. The console made a smile at me. You can download source code of the project. To run the project all you have to do is deploy to Tomcat and run Client.java as a java application. Enjoy :)


3 comments:

  1. Thanks Yusuf for that. It is very useful source. You are exactly right about blogs. About sharing the code developers write code are shy. Sometimes we can be too.

    ReplyDelete
  2. Yusuf, nice post and great you let us have the code. I think you can also try default JAX-WS implementation which is built-in JavaSE6.

    ReplyDelete
  3. Yusuf thanks for the article
    Good technology for web services, I hope this will be a good solution for our web projects

    ReplyDelete