I have been playing around with Apache CXF, in particular the various data bindings it supports: JAXB (the default), MTOM, Aegis and XMLBeans. Since all of these are supported, I suppose each has its merits. I came up with these:
- Obviously, MTOM is to be preferred where large attachments are involved.
- JAXB depends on annotations, so it is less suited when modification of classes is restricted.
- Aegis has no
wsdl2java
tool, so it is less suited for "contract-first" development, i.e. start with a WSDL and generate your Java code from that. - It appears that Aegis provides slightly more control over the mapping between Java classes and XML through its declarative syntax in Class.aegis.xml files. On the other hand, I couldn't devise of any scenarios where JAXB did not do the trick.
I found this question juxtaposing JAXB and XMLBeans, but it doesn't give a comprehensive overview:
http://stackoverflow.com/questions/1362030/jaxb-vs-apache-xmlbeans
Besides these naive, a priori considerations, do you have any blood-and-guts experiences that would support the use of any other binding besides JAXB? I'm asking from a CXF point of view, but if any other options come to mind (e.g. Castor) please don't hesitate to elaborate.