You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by James M Snell <ja...@us.ibm.com> on 2001/10/23 22:56:11 UTC

Comments on the status of Axis

Below is an off the cuff listing of issues I have currently with the Axis 
code.  Can somebody (Glen, Sam, Doug, others...) please review and 
comment.

Current Issues with Axis (IMHO)
=================================

(Based on the requirements doc)

1. Service and Operation Identification
   (#30) Dispatch by transport URL 
      - Does this actually work for all services, or just JWS services?
      - It's not clear how this works
      - In my opinion, we should be able to do this regardless of the
        handlers we have on the chain.
      - It seems wasteful that we have to walk through the chain in order
        to figure out which service to call when we may have enough 
information
        at the start to figure this out.
      - I really think we should figure out a better way to do this
      - Put to a vote, I'd -1 the current method unless somebody can give 
me a compelling reason why it's the only good way

2. (#80) Installation and deployment of both the engine, components, and 
services should be simple 
   The requirements doc says "done!" ... is it really done?  I know we 
have some interim stuff (the Admin and ConfigProvider stuff) but I don't 
think that these are actually done yet.

3. (#81) Support a WebServiceArchive format which associates the 
executable and the description files
   Something like this will be coming with JSR109.  I'm not sure this is 
still a requirement for us.

4. (#82) Support .asmx-like drop-in service deployment 
    JWS is wierd.  Why does this belong in Axis?  This seems like a 
duplication of JSP done in a very poor way.  If we really wanted something 
like ASMX, the closest analog is to create something based on the already 
existing JSP architecture.  It can be done and it's actually quite simple 
to do.  Put to a vote, right now I'd -1 the JWS approach unless someboy 
has a really compelling reason why it's betterthan the JSP model.

    When I say "JSP model", I mean that we could very easily adapt the JSP 
architecture for this, either by creating custom tags or by customizing 
JSP (Greg Truty may be able to offer some insights into how this could be 
done as he's the one that pointed it out to me in the first place ;-) ...)

5. (#83) A single SUPER TINY .jar file must be enough for a client to 
communicate via SOAP
    We've already blown this one.  The number of dependencies is growing.

    Anyway we can make dependencies on log4j.jar, wsdl4j.jar, and 
activation.jar and mail.jar (when the attachments stuff comes in) optional 
at runtime? 

6. (#102) Must not name general classes as SOAPWhateverDoer 
    This one isn't being met either.  In several places in the Message API 
the code relies on classes named "SOAPxxxx".

7. (#103) Simultaneous support for multiple message protocols
    See my message api notes below.  Not only is this not done, it would 
require a major  change, IMO, to make happen.

8. (#113) Handlers need to be allowed to reach raw message data 
    Done, but not in a very good way.  See my message API notes below

9. (#144c) Extend WSDL with information on where to get components for 
stuff 
    What does this mean??

10. (#160) Extensible support for encodings
    "Done!" Is it really?  Sure, we can plug in new serializers and 
deserializers, but how do I plug in a completely new encoding style?  Does 
the encoding architecture include support for multiple encoding styles 
used within a single message?  Can a single QName be mapped in two 
different encoding styles at the same time?  I think this needs more work

11. Message API
    The Message API falls way short, IMO, of what we had original 
discussed way back when we started this project.  It is not simple, nor is 
it pluggable.  Currently, it relies heavily on SOAP specific semantics and 
is not clear how exactly I would go about plugging in support for a new 
protocol (XML-RPC for example). 

    The object model/hierarchy is confusing and poorly laid out, 
especially if we are shooting for pluggability.  The code itself is overly 
complex and its not clear which classes do what.  This makes it hard to 
trace what is going on where.

    A SOAP message may use multiple encoding styles, each encoding style 
may define a different type mapping for QName's.  I might have missed it, 
but I don't see any support for handling this case.  Right now, the code 
seems to assume a single encoding style for all cases (an encoding style 
being a collection of type mappings).

12. Core Handler/Chain architecture
    Too many classes.
      - Why do we need Handler and BasicHandler, why not
        make Handler an abstract class so we can get rid
        of the extra class (BasicHandler)
      - Same thing with Chain/SimpleChain, 
        TargetedChain/SimpleTargetedChain
      - Handler, Chain and TargetedChain do not have to 
        be interfaces.

13. Configuration
    I Don't like the push-style configuration (doEngineConfig()...) I'd 
prefer a pull-style configuration (getHandlerRegistry()...)
    Is there a really compelling reason to have the push-style 
configuration?  If not, I'm going to -1 it and change it to a pull.

14. Strategies?? 
    What the heck are these? What exactly are they for? It's not clear.

15. Overall object model
    I think that a lot can be done to clean up the overall object model.


I've got my fireproof parka on so you can start flaming me now ;-)

- James M Snell/Fresno/IBM
    Web services architecture and strategy
    Internet Emerging Technologies, IBM
    544.9035 TIE line
    559.587.1233 Office
    919.486.0077 Voice Mail
    jasnell@us.ibm.com
=================================================================
Have I not commanded you?  Be strong and courageous.  Do not be terrified, 

do not be discouraged, for the Lord your God will be with you wherever you 
go.  
- Joshua 1:9