I have not followed the directions, but the only explicit references 
to the 2001 schema constants I find are in Constants.java, 
SOAPMappingRegistry.java and SoapEncUtils.java.  Therefore, I think 
the instructions are correct: make the change, rebuild soap.war and 
you should be based on the 1999 schema again.

When you say you are working with a 2.3.1 server, is that the 2.3.1 
release or the current source?  I know you needed the current source 
for https proxy on the client (right?), but could you use the 2.3.1 
release version on the server?  I ask because there is a bug in the 
2.3.1 release in which the old SOAP base64 type was used instead of 
the 2001 schema type.  If you can get by with different versions of 
client and server code, this would be the way to go.

If you are going to create your own build from the current source, a 
better option than reverting to 1999 serialization would be to edit 
SOAPMappingRegistry.java instead of Constants.java.  You could just 
hack out the lines that register type mappings for base64Binary, i.e. 
where there is currently

    /*
      Map a Java byte array to the SOAP-ENC:base64 subtype.
    */
    Base64Serializer base64Ser = new Base64Serializer();
    QName base64QName;
    if (schemaURI.equals(Constants.NS_URI_2001_SCHEMA_XSD)) {
        base64QName = new QName(Constants.NS_URI_2001_SCHEMA_XSD, 
"base64Binary");
        mapTypes(soapEncURI, base64QName, byte[].class, base64Ser, 
base64Ser);
        base64QName = new QName(soapEncURI, "base64");
        mapTypes(soapEncURI, base64QName, byte[].class, null, 
base64Ser);
    } else {
        base64QName = new QName(soapEncURI, "base64");
        mapTypes(soapEncURI, base64QName, byte[].class, base64Ser, 
base64Ser);
    }

you could instead do

    /*
      Map a Java byte array to the SOAP-ENC:base64 subtype.
    */
    Base64Serializer base64Ser = new Base64Serializer();
    QName base64QName;
    base64QName = new QName(soapEncURI, "base64");
    mapTypes(soapEncURI, base64QName, byte[].class, base64Ser, 
base64Ser);

On 24 Jun 2003 at 17:57, Richard Bolen wrote:

> I followed the directions in the documentation which say to patch the
> Constants.java file to change the current schema to the 1999 schema.  I
> did this but the RPCRouterServlet for a StatelessSessionBean provider
> continued to use the 2001 schema.  Is there anything I can change via a
> config file?  I'm already using my own config manager class.
> 
> Does anyone know how to get the patch method to work?
> 
> Also, are there any major issues with continuing to use the 1999 schema
> over the 2001 version?  I'm trying to maintain backwards compatibility
> with our servers.
> 
> 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