History:

When Apache SOAP (actually, IBM SOAP4J) started, it was based on the 
SOAP and XML Schema specs of the day.  Since XML Schema did not 
define a type for Base64 encoded data, the SOAP spec defined one, and 
that was the type Apache SOAP used.  By Apache SOAP 2.2, there were 
also 2000 and 2001 revisions to the XML Schema specification, for 
which Apache SOAP provided some support for deserialization of these, 
but the 1999 spec was still used for serialization.  In the period 
between Apache SOAP 2.2 and 2.3.1, more 2001 schema types were 
supported, including the base64Binary type.  With 2.3.1, the 2001 
spec became the default used for serialization, because it added 
several types, support for which was required to maximize 
interoperability with other SOAP implementations.  Client apps could 
override this in the way they constructed the SOAPMappingRegistry, 
but services had no way to control this, although they could override 
the mappings in the deployment descriptor.

At this point, the only way to have a 2.3.1 (and later) based service 
send base64 that a 2.2 client will understand is to add the 
deployment descriptor mapping.  It would be "nice" if Apache SOAP 
could sense older clients (specifically, ones using the 1999 schema) 
and use older the older schema for serialization, but the current 
code does not do that.

On 23 Jun 2003 at 10:38, Richard Bolen wrote:

> Perhaps more to the point is what the xsi:type attribute is set to for
> the byte[] element I'm trying to send:
> 
> SOAP 2.2:  
> <objectBuffer xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/";
> xsi:type="ns2:base64">
> 
> SOAP 2.3.1 June 20 Nightly Build:  
> <objectBuffer xsi:type="xsd:base64Binary">
> 
> Can I force it to use the old ns2:base64 type?
> 
> 
> -----Original Message-----
> From: Richard Bolen 
> Sent: Monday, June 23, 2003 9:46 AM
> To: [EMAIL PROTECTED]
> Subject: Base64 --> Base64Serializer - Why?
> 
> 
> I recently tried upgrading to the latest nightly build of SOAP (June 20,
> 2003) from 2.2.  I needed this to support HTTPS over a proxy server.
> 
> The problem I had was that it suddenly started using a different SOAP
> serializer type for byte[] content (Base64Serializer instead of Base64).
> I had to change my server config to add the new serializer
> (Base64Serializer).  The problem is that I have existing servers that I
> have to support and I can't change their config to add the serializer.
> This basically broke backwards compatibility.
> 
> Why was this change made?  Also, is there anything I can do to fix it?
> Can I force it to use the old serializer?  
> 
> Thanks,
> Rich
> 


Scott Nichol

Do not reply directly to this e-mail address,
as it is filtered to only receive e-mail from
specific mailing lists.


Reply via email to