At Java One this year I met a lot of Eclipse users. Almost everyone I talked to was using either Axis or XFire for web services. I couldn't understand why more developers aren't using the Java EE standard JAX-WS which is extremely simple to use, fast, powerful, and now seamlessly inter operates with .NET (WSIT). Have a look at this SOAP Stack Comparison chart from XFire's website.
The JBoss application server uses Axis, and so does Apache Geronimo. MyEclipse IDE uses XFire, and likely most of the other IDEs based on Eclipse do too. I think IDE support largely influences what people use. My initial theory was that XFire and Axis are popular because the trend seems to be "avoid Java EE standards at all-cost". Make your customers spend big bucks on BEA WebLogic, then use as if it were the Tomcat servlet container by not using any of the Java EE features.
Today I figured it out! I was reading a thread in the MyEclipse forums where someone brought up this exact subject. One person's response was that most developers haven't been able to use JAX-WS because they are still using Java 1.4 and old application servers. Axis and XFire works for those developers. BEA WebLogic and Apache Geronimo only recently announced support for Java EE 5, almost a full year after the spec went final. That hasn't been a problem for me because I use Sun products such as Sun Application Server 9.x (Glassfish) and NetBeans 5.5 which fully support Java EE 5 and WSIT.
According to the thread I was reading, MyEclipse has plans to add JAX-WS support in their upcoming 6.0 release. BEA WebLogic 10 now uses the JAX-WS and JAXB implementation from Glassfish.
Working from his home office in Toronto,
Ryan de Laplante can be found developing software in
Java by day, and obsessing with technology by night.
Ryan has been designing and writing software for
IJW since 1998 and is very passionate about his work.






Posted by Dan Diephouse on July 02, 2007 at 07:42 PM EDT #
Posted by eduardo pelegri-llopart on July 10, 2007 at 01:51 AM EDT #
Here is a more general stack comparison that shows Glassfish+Metro has rather limited databinding capabilities in comparison:
http://wiki.apache.org/ws/StackComparison
This also seems to be re-affirmed in the JEE5 tutorials. Only simple types.
As an experiment I tried to build a client with the Amazon WSDL at http://soap.amazon.com/schemas2/AmazonWebServices.wsdl, and Netbeans crapped all over itself.
Since I am running on V1 of Glassfish, thus I have not been able to use WSIT yet which only becomes available in V2 of glassfish. Does WSIT address this?
I am curious of your thoughts.
Posted by ITVGuy2000 on July 10, 2007 at 04:15 AM EDT #
With JAX-WS I use complex types as input and output all the time. For example, a Reservation object, or a collection of Reservation objects. I have also enabled MTOM and returned binary files as an attachment (SOAP With Attachments, SAAJ). At least for the things I do with JAX-WS, I have not found myself to be limited in any way.
According to the chart you linked to, JAX-WS supports JAXB, but not Castor, XMLBeans or JiBX. I have not used these other technologies before. I have been mostly happy with JAXB. What I don't like about JAXB is conversions between XMLGregorianCalendar and Date.
A while back I saw a neat program that was kind of like an object relational mapper for web services. You could map the XML data directly to POJOs so that you don't have to manually do the conversion on the client end. I think it was an alternative to JAX-WS, and I don't remember the name. Neat idea though.
Posted by Ryan de Laplante on July 10, 2007 at 09:01 AM EDT #
Eduardo, thanks for the comment. I'm glad to see Java EE 5 adoption grow. Rod Johnson of Interface21/Spring said that he likes Java EE 6 on his blog. I think that is really great news.
Posted by Ryan de Laplante on July 10, 2007 at 09:37 AM EDT #
I am just figuring stuff out, so I am probably doing something wrong, but so far as I try to write web services clients against services that are published on the web, I run into problems with Netbeans reporting it doesn't know what do do with this type or that.
One example of this (as I mentioned) is the amazon web services at http://soap.amazon.com/schemas2/AmazonWebServices.wsdl.
I get all kinds of warnings and errors from Netbeans when create a new web serivces client (project node->new->web service client) when I give it the WSDL URL.
Am I doing something wrong? Am I missing some steps? Or is it that JAXB can't understand the WSDL/Schema defined by Amazon because of its use of complex types?
FYI, I am going to post some of this on one or more java.net mailing lists.
Any chance I can have your email Ryan? You have mine.
Posted by ITVGuy2000 on July 10, 2007 at 09:49 AM EDT #
JAX-WS doesn't support soap-enc wsdls. If you are trying to import rpc/encoded wsdls, use wscompile tool from jax-rpc . In Netbeans, select Java EE version as J2EE 1.4 which automatically uses JAX-RPC tools.
Posted by Ryan de Laplante on July 10, 2007 at 06:43 PM EDT #