<warning: long, "best practice" questions to follow>

Interesting to hear you say that, Anne.  I've been on a multi-year
quest to get automatic, fast validation out of a Web Services engine.
Conceptually, it always seemed like the "right" approach (especially
for Document-Literal).  If you're having to parse XML anyway, and your
XML parser can validate when it does so, why not do it, actually
enforcing your restrictive WSDL/Schema at the layer that defines and
understands it?

At the time, Axis did not do this at all, but my Bugzilla feature
request seemed to get agreement that this was a good goal:

http://issues.apache.org/jira/browse/AXIS-222

Also at that time, I tried out Systinet Wasp, which did do
auto-validation.  Much later, I came across the DeveloperWorks article
about combining Axis and Castor to get auto-validation:

http://www-128.ibm.com/developerworks/webservices/library/ws-castor/

This approach was exactly what I was seeking, so we started using it.
It's very simple, but it does seem slow.  (I'm also not getting pure
POJOs for my "schema" beans, which I'd really like, but Castor's
aren't too bad.  Haven't found an XML framework that generates clean
POJOs from a schema and don't want to write mapping files if I can
help it.)

Along the way, we asked everyone we could whether or not
auto-validation was a good approach, and we got responses all across
the spectrum.  Clearly some people expect and want it, but others
don't.  Some engines can do it, but others can't.  If the only reason
not to do it is performance, will the newer parsers or something like
JiBX make a significant difference?  What if you have access to an XML
appliance?  Would more people do it in that case?  I suppose an engine
that let you enable and disable it at will would be nice.

I'm not exactly sure where I stand at this point, but I'm not quite
willing to give up on the "dream".  That is, the dream of wholly
specifying my interface via WSDL/Schema, and having a WS engine
completely wrap, translate, and validate
requests/responses/exceptions, hiding from my business code the fact
that it's even being accessed as a Web Service, but ensuring that
anything that comes through the Web Service interface doesn't violate
the Web Service's specification.  I've started accepting the value of
having my business code do business validations as well (namely in
cases where I want to use it from other interfaces), but it just seems
too natural, logically, for the XML parsing layer to do it.
Otherwise, you're throwing away much of the information you've
carefully specified (in a handwritten, authoritative, contract WSDL,
at least).

I'd be happy to take this discussion somewhere else, since it's really
not specific to Axis, if you'd like and if you have time to
participate in it.  Thanks.

Doug

On 7/7/06, Anne Thomas Manes <[EMAIL PROTECTED]> wrote:
Axis makes no attempt to validate messages. (It's very expensive
process that would significantly degrade performance). A databinding
system will catch many validation issues, but it also does not do true
validation. If you pass in elements that it doesn't expect, it will
reject the request. But as long as the message matches what the
databinding system can deal with, it will pass.

If you want to validate the message, then use a handler or
intermediary to do so.

Anne

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to