Wednesday, September 21, 2011

Axis2 vs JAX-WS RI vs Apache CXF vs Spring-ws

we were given the daunting task to evaluate a web services engine or soap engine or ws stack… many names but underlying tools are the same (one from wsdl to java and other from java to wsdl).. btw we were researching on stacks for java based development… but other ppl from peer technologies can also read thru… after all ws is about language independent services ;)
pre-requisites:
1. we needed xmlbeans badly as that is something which can go nearest to xml representation in xsd and useful for some data type conversion support… so xmlbeans have support that no other binding has.. it was part of weblogic services stack until 8.x i heard until BEA has thought wise and gave it as seperate product.
2. as our app was an existing java application which needed to be service enablising … we needed a very mature and easy to user services stack along with all the buzz words from architecture group.. like WS-I* support… it is a set of standards set by interoperability( will call as I16 from now on), i dont have a single neuron size idea why we would be needing that support in the first place.
3. as our architecture group pitched in.. they brought along lot of web services buzz words… ESB, WS-I16, soap station… synchronous jms ;) .. stay amazed.. we have a set of great ppl.
4. we also needed to have spring as core part of implementation of these services.. so out of the box support would be greatly appreciated.
so then we started to evaluate all the possible frameworks or service stacks…
axis was easy to use and generate stubs.. first tried with AAR file based deployement.  then with codegen and axis2 plugins available in eclipse.. after few days of experimenting we were able to follow the good documentation of axis2 and come up with a small example of spring based service, top down development(that was pretty slick with even the build file by axis2) and then bottom up.
cxf was pretty easy to use with spring.. the driving force for us was spring.. but one of the fellow evaluators started conveying doubts on… no good documentation and not many people are out there who went thru the  pains and have posted the solutions to all the commonly faced problems.. sometimes its not how gud the framework is that decides its maturity.. its how good the support forums and user base is .. that decides the maturity factor. even axis2 wud have had the issue if not for the extensive documentation and support forums.
spring-ws seemed the easiest for us.. .still if u have some small internal services which are already based on spring.. go ahead with spring-ws. only issue was spring-ws was still in 1.0 stage… which is scary.
Then comes the almightier JAX-WS… we had a new soa consultant who is supposed to have had lot of experience with web services… when we were having discussion.. he asked why you are considering axis2? we said.. ” thats the recommended stack from our arch group” (sometimes we have to satisfy few people even though you are draining an entire ocean to find a crab.. bad proverb) his opinion was “you need your services to be vendor neutral… so if you are not going to use the hot deployement feature of axis2… there is no use in going with axis2. jax-ws is the spec from industry “sun” and it is the best available” he was not aware that we are only towards “XMLBeans binding”… eventually while reading thru jax-ws documentation.. i think it supports only jaxb and no other binding.. is it true?
Axis2
JAX-WS RI
Apache
CXF
Spring-
WS
Framework maturity
Quite mature
Open standard and mature
Mature
1.0 is the latest release available
Binding support
ABD,JIBX,XMLBeans (is part of
distribution and has flag to generate javacode out
of xsd’s)
Only JAXB?
JAXB 2.0, Aegis, XMLBeans. (xmlbeans are not
supported out of the box like axis2)
JAXB, Castor, XMLBeans, JiBX, and XStream (similiarly no out of
the box support, not part of distribution or tool)
Core
Axiom
Java Annotations
Xfire+..
Spring
Top down support
Very good
Not so good
Not so good
Very good
Bottom up support
Very Good
Very Good (annotations)
Very Good (Spring)
Very good
XMLBeans support
Out of the box support
NA
It says it supports, but no easy documentation or flags to
generate java classes from xsd.
NA
Number of frustrated people met
Axis1 was bad in terms of performance and Many ppl are not happu because of
.net interoperability issue.
Less number of frustrated people.
Number of happy people
moderate
Many as sun spec is Jax-ws
moderate
NA J
Actual interoperability support (.net and java)
good
Metro (joint project by sun with Microsoft)
WS-I full support but not sure
NA
0

No comments:

Post a Comment