Why don't we see more JAX-WS support in IDEs?

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.

Comments (7)

Comments:

The Eclipse SOA tools project is adding support for JAX-WS as well. Check out their 0.6 release which works with CXF (aka XFire 2.0).

Posted by Dan Diephouse on July 02, 2007 at 07:42 PM EDT #

Actually, adoption of JavaEE 5 is faster than earlier standards; these things just take time as each JavaEE licensee needs to balance their existing customers, middleware stack and new standards. For example, JBoss announced they will support JAX-WS, including both the Metro WS Stack (from GlassFish) and CXF. - eduard/o

Posted by eduardo pelegri-llopart on July 10, 2007 at 01:51 AM EDT #

I am curious what your thoughts are regarding databinding. I am finding that binding to something other than simple types is challenging with Netbeans/Glassfish+Metro.

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 #

Eduardo, when you talk about data bindings and JAX-WS only supporting simple types, are you talking about String, int, boolean, etc... or are you talking about JAXB, Castor, XMLBeans, etc...?

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 #

ITVGuy2000, I also get a long list of errors when using the amazon WSDL file. I have posted a question about this on the glassfish users mailing list. They are usually pretty good at answering questions related to JAX-WS.

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 #

Ryan, thanks for replying. Just FYI, you are replying to my post, yet attributing it to eduardo.

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 #

I sent an email to the JAX-WS users mailing list about this Amazon web service. Rama Pulavarthi replied with:

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 #

Post a Comment:
Comments are closed for this entry.