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 Peter Conrey <pf...@hotmail.com> on 2008/08/23 04:15:08 UTC

Request: Option to Remove Strict Schema Validation

I have been developing web services and web service clients in a large
corporate environment for several years now.  We employed several Perl web
services (using SOAP::Lite) to feed both Java-based web clients (using Axis
1) and .NET clients in other departments.  While the architecture works very
well, we¹ve run into a very frustrating scenario that limits our ability to
respond quickly to change requests.  Whenever we need to add data to a web
service (say, a new field to a customer profile object), we have to
completely re-deploy any Java application that uses that service/object,
even if that new field is not relevant to the application.

When we discovered that Axis 2 provided a means of turning off strict schema
validation, we were excited to covert our code.  However, according to the
Axis documentation, the only client format that supports the ³-Eosv² option
is ADB, which also carries the following limitation:

    ³It is not meant to be a full schema binding application, and has
difficulty with structures such as XML Schema element extensions and
restrictions.²
        --http://ws.apache.org/axis2/1_4/userguide-creatingclients.html#
<http://ws.apache..org/axis2/1_4/userguide-creatingclients.html#>
createclients

Unfortunately, we use both extensions and restrictions in our schema, as
they best define our data structure.  How difficult would it be to add the
³Eosv² option (or equivalent) to all data binding formats?  As much as I
hate to tout Microsoft, .NET has no such limitation, so adding information
to serialized objects has no effect on .NET clients.  While this may not be
the ³correct² behavior from a strict standards-based perspective, from a
practical, enterprise perspective, it is unacceptable to have to rebuild
8-10 client applications just to support a change required only by one or
two, especially when one of the unaffected applications is beyond the
service developer¹s control.