Can't deserialize xsd:date attributes using Axis WSDL2Java classes

From: john (j_m_chang_spam_at_yahoo.com)
Date: 09/30/04


Date: 29 Sep 2004 15:37:46 -0700

I am generating client classes from a WSDL with the Axis WSDL2Java
tool.
Many of the attributes of the complexType objects described in the
wsdl
are xsd:date attributes. I can call some of the methods successfully,
but
when I call a method that returns an object that has an attribute
which maps
to an xsd:date attribute from the wsdl, the client fails with a
deserialization
error. Here is a snippet from the wsdl:

<xsd:element name="base_currency_select_response">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="currency" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:attribute name="currency" type="xsd:string"
use="required"/>
          <xsd:attribute name="user_code" type="xsd:string"
use="required"/>
          <xsd:attribute name="description" type="xsd:string"/>
          <xsd:attribute name="exchange_rate" type="s0:ZZMoney"
use="required"/>
          <xsd:attribute name="n_decimal_places" type="xsd:int"
use="required"/>
          <xsd:attribute name="change_date" type="xsd:date"
use="required"/>
          <xsd:attribute name="currency_symbol" type="xsd:string"/>
          <xsd:attribute name="html_symbol" type="xsd:string"/>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

I look at the xml being sent back to the client from the server, and
it looks
like:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
         soap:encodingStyle="" >
<soap:Body xmlns="http://Sandlot/XmlWebServices/" >
<base_currency_select_response table_specification="currency" >
<currency currency="USD" user_code="ZZS" description="US Dollar"
exchange_rate="1.000000" n_decimal_places="2" change_date="1998-01-01"
currency_symbol="$" />
</base_currency_select_response>
</soap:Body>
</soap:Envelope>

Note the part: change_date="1998-01-01"

In the Axis-WSDL2Java-generated data file representing this object,
this change_date is represented as a java.util.Date:
  private java.util.Date change_date; // attribute

This is what happens in the console when I call the web service
method:
There was 1 error:
1) test8SandlotSoapBaseCurrencySelect(Sandlot.XmlWebServices.SandlotWSTestCase)A
xisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: java.lang.NumberFormatException: Invalid date/time
 faultActor:
 faultNode:
 faultDetail:
        {http://xml.apache.org/axis/}stackTrace:java.lang.NumberFormatException:
 Invalid date/time
        at org.apache.axis.encoding.ser.BeanDeserializer.onStartElement(BeanDese
rializer.java:417)
        at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerIm
pl.java:435)
        at org.apache.axis.encoding.ser.BeanDeserializer.startElement(BeanDeseri
alizer.java:165)
        at org.apache.axis.encoding.DeserializationContextImpl.startElement(Dese
rializationContextImpl.java:1053)
        at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.ja
va:198)

I am using java 1.4.2_03. I have tried generating and calling the
service with
Axis 1.1 and 1.2 beta - same problem both times.

Anybody know what I am doing wrong? Or is this just and Axis bug? Or
is this a bug in the web service server (I doubt that - the xml looks
good - but maybe..)? Any ideas or suggestions would be greatly
appreciated.

Thanks.
-John

Any ideas for fixing this would be greatly appreciated.



Relevant Pages

  • Re: Java Axis client to a generic web service
    ... java client to a web service developed in Axis too. ... Now I have to develop another client to a web service but it ... WSDL2Java is a standalone tool, and will work if you have a WSDL. ...
    (comp.lang.java.programmer)
  • C# client (Invoke returns null) -- Axis webservice
    ... Axis. ... But I am getting a null in the following code (wsdl generated and the ... But I am getting the Soap response returned to the client which I am ...
    (microsoft.public.dotnet.framework.webservices.enhancements)
  • Re: .net client + Axis 1.1 server + wrapped param: null result
    ... You are right that from axis server side, I need to hand craft the skeleton ... codes/settings before I can use the session handler, ... Here is the modified WSDL: ... ema.XmlSchemaForm.Unqualified)] string username, ...
    (microsoft.public.dotnet.framework.aspnet.webservices)
  • Re: Reading a Java webservice with VB.NET
    ... My client created a very simple "Hello World" web service. ... Using the wsdl.exe program on the actual wsdl still did not work. ... > you mentioned an Apache server, but if you are referring to Apache HTTPD, ...
    (microsoft.public.dotnet.framework.webservices)
  • Re: .NET Client calling Java webservices. Slow Performance
    ... If the AXIS webservice is simple, you can also invoke it directly from VB ... > I am having performance issues with the .NET client calling the Java ...
    (microsoft.public.dotnet.framework.webservices)