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
