You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Oliver Wulff <ol...@zurich.ch> on 2002/02/05 10:50:00 UTC
xsi type, NS_URI_CURRENT_SCHEMA_XSD
Hi
I need to communicate with the XMLBus from IONA. So, it's necessary to use
the XML Schema 2001. But the soap package use by default 1999. I've read in
the documentation guide\interop.html, that I can download the source code
and change the Constants.java:
public static final String NS_URI_CURRENT_SCHEMA_XSI =
NS_URI_2001_SCHEMA_XSI;
public static final String NS_URI_CURRENT_SCHEMA_XSD =
NS_URI_2001_SCHEMA_XSD;
But still, the old Schema will be used.
Then, I searched through the source code and found the following in
SOAPMappingRegistry.java:
public String schemaURI = Constants.NS_URI_1999_SCHEMA_XSD;
QName [] schemaQNames = schema1999QNames;
If it is hard coded, it will not work. After the following change, it
worked:
public String schemaURI = Constants.NS_URI_CURRENT_SCHEMA_XSD;
QName [] schemaQNames = null;
The only problem is, that there is still an attribute definition in the
Envelope element in the soap request message:
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV
="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi
="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd
="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:echoFloat xmlns:ns1="http://soapinterop.org/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<inputFloat xmlns:ns2="http://www.w3.org/2001/XMLSchema" xsi:type
="ns2:float">333.444</inputFloat>
</ns1:echoFloat>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Did anybody have the same problem and found a better solution? Can I force
that the Schema 2001 will be used in the whole SOAP message?
Thanks
Oliver
******************* BITTE BEACHTEN *******************
Diese Nachricht (wie auch allfällige Anhänge dazu) beinhaltet
möglicherweise vertrauliche oder gesetzlich geschützte Daten oder
Informationen. Zum Empfang derselben ist (sind) ausschliesslich die
genannte(n) Person(en) bestimmt. Falls Sie diese Nachricht
irrtümlicherweise erreicht hat, sind Sie höflich gebeten, diese unter
Ausschluss jeder Reproduktion zu zerstören und die absendende Person
umgehend zu benachrichtigen. Vielen Dank für Ihre Hilfe.
Re: xsi type, NS_URI_CURRENT_SCHEMA_XSD
Posted by Raghavan Srinivasan <ra...@iplanet.com>.
Hi Oliver ,
This is not the answer to your question , but is a related
change . I think you need to also change the QName array in
Constants.java that contains schema mappings for various versions .
QName schema2001QNames [] incorrectly uses timeInst2001QName
(xsd:timeInstant) when it should be using dateTime .
Someone correctly me if i am wrong , but i saw this fix in a later
release (later than 2.2) of Constants.java (Rev 1.21 and Rev 1.22) .
I saw this cause problems with some WSDL based clients(XSD 2001
compliant) who do not know how to interpret a Soap message that
contain xsd:timeInstant .
Also if someone has a comprehensive list of changes required to switch
the Schema version on an install to 2001 , please post the list of
changes here .
Thanks in advance ,
Raghavan
Oliver Wulff wrote:
>Hi
>
>I need to communicate with the XMLBus from IONA. So, it's necessary to use
>the XML Schema 2001. But the soap package use by default 1999. I've read in
>the documentation guide\interop.html, that I can download the source code
>and change the Constants.java:
> public static final String NS_URI_CURRENT_SCHEMA_XSI =
>NS_URI_2001_SCHEMA_XSI;
> public static final String NS_URI_CURRENT_SCHEMA_XSD =
>NS_URI_2001_SCHEMA_XSD;
>
>But still, the old Schema will be used.
>
>Then, I searched through the source code and found the following in
>SOAPMappingRegistry.java:
> public String schemaURI = Constants.NS_URI_1999_SCHEMA_XSD;
> QName [] schemaQNames = schema1999QNames;
>
>If it is hard coded, it will not work. After the following change, it
>worked:
> public String schemaURI = Constants.NS_URI_CURRENT_SCHEMA_XSD;
> QName [] schemaQNames = null;
>
>The only problem is, that there is still an attribute definition in the
>Envelope element in the soap request message:
> <?xml version='1.0' encoding='UTF-8'?>
> <SOAP-ENV:Envelope xmlns:SOAP-ENV
>="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi
>="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd
>="http://www.w3.org/1999/XMLSchema">
> <SOAP-ENV:Body>
> <ns1:echoFloat xmlns:ns1="http://soapinterop.org/"
>SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> <inputFloat xmlns:ns2="http://www.w3.org/2001/XMLSchema" xsi:type
>="ns2:float">333.444</inputFloat>
> </ns1:echoFloat>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
>
>Did anybody have the same problem and found a better solution? Can I force
>that the Schema 2001 will be used in the whole SOAP message?
>Thanks
>
>Oliver
>
>
>
>
>
>
>
>
>******************* BITTE BEACHTEN *******************
>Diese Nachricht (wie auch allfällige Anhänge dazu) beinhaltet
>möglicherweise vertrauliche oder gesetzlich geschützte Daten oder
>Informationen. Zum Empfang derselben ist (sind) ausschliesslich die
>genannte(n) Person(en) bestimmt. Falls Sie diese Nachricht
>irrtümlicherweise erreicht hat, sind Sie höflich gebeten, diese unter
>Ausschluss jeder Reproduktion zu zerstören und die absendende Person
>umgehend zu benachrichtigen. Vielen Dank für Ihre Hilfe.
>
Re: xsi type, NS_URI_CURRENT_SCHEMA_XSD
Posted by Raghavan Srinivasan <ra...@iplanet.com>.
Hi Oliver ,
This is not the answer to your question , but is a related
change . I think you need to also change the QName array in
Constants.java that contains schema mappings for various versions .
QName schema2001QNames [] incorrectly uses timeInst2001QName
(xsd:timeInstant) when it should be using dateTime .
Someone correctly me if i am wrong , but i saw this fix in a later
release (later than 2.2) of Constants.java (Rev 1.21 and Rev 1.22) .
I saw this cause problems with some WSDL based clients(XSD 2001
compliant) who do not know how to interpret a Soap message that
contain xsd:timeInstant .
Also if someone has a comprehensive list of changes required to switch
the Schema version on an install to 2001 , please post the list of
changes here .
Thanks in advance ,
Raghavan
Oliver Wulff wrote:
>Hi
>
>I need to communicate with the XMLBus from IONA. So, it's necessary to use
>the XML Schema 2001. But the soap package use by default 1999. I've read in
>the documentation guide\interop.html, that I can download the source code
>and change the Constants.java:
> public static final String NS_URI_CURRENT_SCHEMA_XSI =
>NS_URI_2001_SCHEMA_XSI;
> public static final String NS_URI_CURRENT_SCHEMA_XSD =
>NS_URI_2001_SCHEMA_XSD;
>
>But still, the old Schema will be used.
>
>Then, I searched through the source code and found the following in
>SOAPMappingRegistry.java:
> public String schemaURI = Constants.NS_URI_1999_SCHEMA_XSD;
> QName [] schemaQNames = schema1999QNames;
>
>If it is hard coded, it will not work. After the following change, it
>worked:
> public String schemaURI = Constants.NS_URI_CURRENT_SCHEMA_XSD;
> QName [] schemaQNames = null;
>
>The only problem is, that there is still an attribute definition in the
>Envelope element in the soap request message:
> <?xml version='1.0' encoding='UTF-8'?>
> <SOAP-ENV:Envelope xmlns:SOAP-ENV
>="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi
>="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd
>="http://www.w3.org/1999/XMLSchema">
> <SOAP-ENV:Body>
> <ns1:echoFloat xmlns:ns1="http://soapinterop.org/"
>SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> <inputFloat xmlns:ns2="http://www.w3.org/2001/XMLSchema" xsi:type
>="ns2:float">333.444</inputFloat>
> </ns1:echoFloat>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
>
>Did anybody have the same problem and found a better solution? Can I force
>that the Schema 2001 will be used in the whole SOAP message?
>Thanks
>
>Oliver
>
>
>
>
>
>
>
>
>******************* BITTE BEACHTEN *******************
>Diese Nachricht (wie auch allfällige Anhänge dazu) beinhaltet
>möglicherweise vertrauliche oder gesetzlich geschützte Daten oder
>Informationen. Zum Empfang derselben ist (sind) ausschliesslich die
>genannte(n) Person(en) bestimmt. Falls Sie diese Nachricht
>irrtümlicherweise erreicht hat, sind Sie höflich gebeten, diese unter
>Ausschluss jeder Reproduktion zu zerstören und die absendende Person
>umgehend zu benachrichtigen. Vielen Dank für Ihre Hilfe.
>