On Wed, Nov 19, 2003 at 06:31:41AM +0000, kishani Liyanage wrote:
> Can somebody please help me to clarify the following ?

This should probably reside in a FAQ somewhere... (it doesn't afaik)


> What are the outstanding features that AXIS posses compared to other
> web services development tools like IBM's-WSDK and sun's-jwsdk ?

To sum it up: usability and stability.

I can't speak for IBMs WSDK, but the Sun JWSDP (v1.2) is wrought with problems.
I evaluated JWSDP and Axis before settling on Axis, and here's a brief summary
of what I disliked about JWSDP:

1.) Poor error messages for malformed WSDL
I would submit my WSDL and XML Schemas to the w3.org website for validation.
W3 would come back and say that my WSDL was valid.  I'd run JWSDP's 
wscompile.sh tool, and get errors.  What was so vexing is that JWSDP wouldn't
say "Error on line X of file Y", it'd just say something like "attribute not
permitted here", and then I'd have to go hunt for what I changed since the last
time I tried to translate my WSDL to java classes...

2.) Namespace woes
I originally broke up my structure so that I had separate schemas (in separate
namespaces) for each operation.  I then defined a Request and Response complex
type in each one of those schemas, and so my operation defintions had input
messages like: op1:Request, op2:Request, op3:Request, etc etc.  My output
messages were: op1:Response, op2:Response, op3:Response.  Well, even tho op1
was in the namespace http://foo.com/op1 and op2 was in the namespace 
http://foo.com/op2, wscompile ignored everything after the trailing /.  It
tried to generate all the Request and Response classes in the com.foo package.
This obviously didn't work.  End result was that I had to use names like:
op1:Op1Request, op2:Op2Request, op3:Op3Request - quite LAME.

3.) Poor integration with ant
wscompile translates wsdl -> java, something I need to do on multiple 
platforms.  My trouble was that JWSDP ships with a .sh script for doing the
translation.  Sure, there *is* a way to get wscompile working under Ant, but
I had to really hunt to find that trick.  That plain old sucks.

4.) Poor instructions
JWSDP has a *lot* of documentation.  Unfortunately, it's for *all* of the 
technologies in JWSDP (JAXM, JAXP, JAXB, and oh ya I forgot, JAX-RPC).  I 
already know JAXP fairly well, and I don't care about JAXM and JAXB right now.
I don't even care about JAX-RPC right now - I just want to be able to write a 
Java class and expose it via SOAP.  I'll learn about JAX-RPC when I want to
work on my client.  My gripe is this:  JWSDP didn't have a step by step process
to follow where you start with a WSDL, generate java classes from it, code up
your implementation of the interface you defined in WSDL, assemble a war, 
deploy it under tomcat, and configure a servlet to know about your class.  What
is worse is that I'm familiar with WAR and Tomcat, and I've used Apache SOAP
for awhile now - but I was completely thrown by the JWSDP.  Ok, now where is
the Tomcat distribution - do I need to download it?  What JWSDP component 
performs the XML marshalling - how do I configure that?  With Axis everything
is straightforward, at least imo.

5.) Poor error messages when deploying
When I finally figured out how to deploy my class, I received an error that
looked like this:
NoClassDefFoundError: com$foo$Op1Request

What does that mean to you?  It means that the class com, with the inner class
foo, with the inner class Op1Request could not be found.  I looked at that and
said "Hmm, well I never wrote that inner class stuff, so it must be something
that JWSDP generated" and I go off hunting to find that class, and why the 
JWSDP runtime couldn't find it.  It turns out that the error message was 
incorrect.  JWSDP was actually looking for com.foo.Op1Request, and I hadn't
put it in the CLASSPATH and hadn't put it in a WAR that JWSDP knew about.  
Unfortunately I had no idea that the problem was CLASSPATH related because I
couldn't even find the class that JWSDP was reporting as the error 
(com$foo$Op1Request).


Bottom line: I spent 3 whole days farking around with JWSDP, posting to the Sun
forum, feeling beat up by poor error messages, a lack of Ant integration, and
having no clue as to what to do next.  I switched to Axis and had my types
generated (and they were namespace aware), and my server code exposed via SOAP
in under 3 hours.

What I learned from this: don't expect much from a reference implementation.


-c

-- 
 09:45:00  up 23:53,  7 users,  load average: 0.03, 0.10, 0.04

Reply via email to