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.