It is said that in Java usually the easiest things are the hardest. The following is a nice example as it took me some time to figure out how to do it. I wanted to build a simple URL request based web service in Java that returns an JSON object. Yes, you can do that with a simple Servlet too, the advantage of using Axis2 is that you can also call your deployed services using SOAP without any configuration changes.
- Download Axis2 as WAR and install it in your servlet container
- Download the DynamicResponseHandler module and add it to Axis by copying it to WEB-INF/modules
- Patch Jettison or download my patched version and replace it with the one installed in WEB-INF/lib
- Add the DynamicResponseHandler module reference to the axis2.xml configuration (located in WEB-INF/conf):
<module ref="DynamicResponseHandler"></module> 5. Add the JSON Message formatters to the axis2.xml: <messageformatter contenttype="application/json" class="org.apache.axis2.json.JSONMessageFormatter"></messageformatter> <messageformatter contenttype="application/json/badgerfish" class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"></messageformatter> 6. Add JSON Message builders to the axis2.xml: <messagebuilder contenttype="application/json" class="org.apache.axis2.json.JSONOMBuilder"></messagebuilder> <messagebuilder contenttype="application/json/badgerfish" class="org.apache.axis2.json.JSONBadgerfishOMBuilder"></messagebuilder>
Start your servlet container and test the standard version service by calling this url: http://localhost:8080/axis2/services/Version/getVersion?response=application/json
Now you are ready to add your own web services. Here you can find an example how to deploy a simple POJO service. Have fun!
Update: Zeno (see comments) sent me patch for usage with Jettison 1.2 - otherwise he received a NullPointerException. I haven’t checked it, but I hope it helps you! Thanks Zeno!