It looks like SOAP 2.2 versus SOAP 2.3.1. The exact file sizes are File 2.2 2.3.1 -------- ------- ------- soap.war 359,462 375,487 soap.jar 220,703 232,498
The 2.3.1 code (correctly) refuses to recognize xsi:null attributes for the 2001 schema. In that spec, the correct attribute is xsi:nil. This caused a fair amount of grief with implementations that used xsi:null even for the 2001 schema, so the current code base allows the (incorrect) mixing of xsi:null and the 2001 schema. On 4 Jun 2003 at 7:40, Jonathan Roberts wrote: > Scott, > > Details are > > non-working soap.war File : 367 KB, (31/05/2002) > working soap file : 352 KB, (29/05/2002) > > > Failing XML : > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > Working XML: > 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"> > > > Obviously one is 2001, compared to 1999. > > Hope this helps. > > Thanks again. > > Regards > > Jonathan > > > > Scott Nichol <[EMAIL PROTECTED]> wrote: > Can you tell me the sizes of the 2 war files? > > Also, with the xml sniffer, do you see the same version of the XML > schema namespace for xmlns:xsd="..."? > > On 3 Jun 2003 at 11:59, Jonathan Roberts wrote: > > > Scott, > > Excellent news - this was defiantely a version issue. I've just made doubly sure > > and the version of the soap war files "are different". > > > > Interestly the latest version causes this error whereas the older version does not. > > > > Scott again thanks for all your help and your continual support of this newsgroup. > > > > Kind Regard > > > > Jonathan > > > > > > > > Scott Nichol wrote: > > If the value being serialized is really null and you have the same > > version of Apache SOAP on the deployment server as the development, I > > would expect things to work. > > > > It is true that null values can be deserialized. This should be true > > for beans you've mapped and ones you have not (ur-type). Given the > > errors you have, though, it does not seem that a null is really being > > serialized. For example > > > > Can't yet deserialize non-null Objects; > > > > is an error that comes up only when you have xsi:type="xsd:ur-type" > > without xsi:null="true" or xsi:nil="true". > > > > This makes me wonder whether you really have a null value you are > > returning, and whether you are using the same version of Apache SOAP > > in deployment (because handling of xsi:null and xsi:nil has been > > improved along the way). > > > > On 2 Jun 2003 at 16:03, Jonathan Roberts wrote: > > > > > Hi Scott, > > > > > > I have 2 applications using a number of Value Objects. One of these is a Web > > > Service. In the Web Service implementation the Timestamp is in one of the Value > > > Objects however its value is nver set, and always null. On my development server > > > this seems to work fine and seems to deal with it > > (maybe false comfort). > > > > > > This is the same scenario on the deployment Server, however here it seems to > > > fail. It's as if its denomination xsi:null="true", is sufficent to allow it > > > through the soap system, i.e. since it is always null, soap has never attempted > > > to try and deserialize it. > > > > > > Hope this makes sense. > > > > > > Jonathan > > > > > > Scott Nichol wrote: > > > I don't see how it could ever work, unless some version of > > > java.sql.Timestamp has a default ctor. The following code in > > > BeanSerializer creates the bean: > > > > > > private Object instantiateBean(Class javaType) > > > throws IllegalArgumentException > > > { > > > try > > > { > > > return javaType.newInstance(); > > > } > > > catch (Throwable t) > > > { > > > throw new IllegalArgumentException("Unable to instantiate '" + > > > > > > StringUtils.getClassName(javaType) + > > > "': " + t.getMessage()); > > > } > > > } > > > > > > The newInstance is only going to work if the class has a default ctor > > > (or in Sun's terminology, a "nullary constructor"). > > > > > > On 2 Jun 2003 at 15:14, Jonathan Roberts wrote: > > > > > > > HI Scott, > > > > > > > > I thought I'd got around this by declaring the java.sql.Timestamp as a class > > > > in the xml file and loaded it with all the other classes. This seems to be > > > > fine on my machine but not on a deployment server. Could it be a class problem? > > > > > > > > Cheers > > > > > > > > Jonathan > > > > > > > > Scott Nichol wrote: > > > > java.sql.Timestamp does not have a default constructor, which Apache > > > > SOAP requires for instantiation. An alternative for you would be to > > > > return a java.util.Date, which Apache SOAP knows how to serialize and > > > > de-serialize. > > > > > > > > On 2 Jun 2003 at 10:54, Jonathan Roberts wrote: > > > > > > > > > Hi. > > > > > > > > > > I'm getting the following errors on the response from the soap server : > > > > > > > > > > on the > > > > > r = c.invoke ( new URL( mstrHostString + "/soap/servlet/rpcrouter"), "" ); > > > > > call > > > > > where Response r; > > > > > and Call c; > > > > > --------------------------------------------------------------------------- > > > > > > > > > > Error report : > > > > > 1. If information exists and is returned : > > > > > > > > > > Unable to instantiate 'java.sql.Timestamp': java.sql.Timestamp > > > > > > > > > > You chose fetchAccountUsingAccountNo 10015301 > > > > > > > > > > Exception = [SOAPException: faultCode=SOAP-ENV:Client; msg=Unable to > > > > > instantiate 'java.sql.Timestamp': java.sql.Timestamp; > > > > > targetException=java.lang.IllegalAr > > > > > > > > > > gumentException: Unable to instantiate 'java.sql.Timestamp': > > > > > java.sql.Timestamp]. > > > > > > > > > > ---------------------------------------------------------------------------------------------------- > > > > > 2. If no information: > > > > > > > > > > Exception = [SOAPException: faultCode=SOAP-ENV:Client; msg= > > > > > > > > > > Can't yet deserialize non-null Objects; > > > > > > > > > > targetException=java.lang.IllegalArgumentException: Can't yet deserialize > > > > > non-null Objects] > > > > > > > > > > ------------------------------------------ > > > > > > > > > > Isssues : > > > > > > > > > > 1. I'm aware of problems with the timestamp and have set it up in the client > > > > > side thus have named it explicitly : > > > > > > > > > > QName qn9 = new QName("urn:xml-IVR-App", "java.sql.Timestamp"); > > > > > //map the type > > > > > smr.mapTypes(Constants.NS_URI_SOAP_ENC, qn9, java.sql.Timestamp.class, bsr, > > > > > bsr); > > > > > //telling the call object to use this mapping > > > > > c.setSOAPMappingRegistry(smr); > > > > > > > > > > 2. and the xml > > > > > > > > > > > > > > > > xmlns:x="urn:xml-IVR-App" > > > > > > > > > > qname="x:java.sql.Timestamp" > > > > > > > > > > javaType="java.sql.Timestamp" > > > > > > > > > > java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer" > > > > > > > > > > xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer" > > > > > > > > > > /> > > > > > > > > > > 3. Wierder - this works on the development machine but not on the > > > > > stand-alone Test Server. > > > > > > > > > > Any help would be appreciated. > > > > > > > > > > Jonathan > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------- > > > > > Yahoo! Plus - For a better Internet experience > > > > > > > > > > > > > > > > > Scott Nichol > > > > > > > > Do not reply directly to this e-mail address, > > > > as it is filtered to only receive e-mail from > > > > specific mailing lists. > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------- > > > > Yahoo! Plus - For a better Internet experience > > > > > > > > > > > > > Scott Nichol > > > > > > Do not reply directly to this e-mail address, > > > as it is filtered to only receive e-mail from > > > specific mailing lists. > > > > > > > > > > > > > > > > > > --------------------------------- > > > Yahoo! Plus - For a better Internet experience > > > > > > > > > Scott Nichol > > > > Do not reply directly to this e-mail address, > > as it is filtered to only receive e-mail from > > specific mailing lists. > > > > > > > > > > > > --------------------------------- > > Yahoo! Plus - For a better Internet experience > > > > > Scott Nichol > > Do not reply directly to this e-mail address, > as it is filtered to only receive e-mail from > specific mailing lists. > > > > > > --------------------------------- > Yahoo! Plus - For a better Internet experience > Scott Nichol Do not reply directly to this e-mail address, as it is filtered to only receive e-mail from specific mailing lists.