Axis2 - Date Format

Dynamicbyte picture Dynamicbyte · Aug 28, 2009 · Viewed 14.9k times · Source

Scenario

The date format which is output as a response to the Web Service client by Axis2 is formatted as "2009-08-28+01:00". I would like to change this to show only the date without the timezone information (e.g.:"2009-08-28")

Configuration

Libraries

Axis 2 1.4.1

WSDL

<xsd:element name="StartDate" type="xsd:date" />;

Question

  • Is it possible to change the output format, which is used by Axis 2 to write date information?
  • Can you see any issues for .NET clients reagrding the conversion of this date format?

Constraints

Unfortunately it is not possible to change the "StartDate" element to a xsd:string or xsd:token


Question refinement

As I am using the xsd:date XML Data Type which is defined as

[-]CCYY-MM-DD[Z|(+|-)hh:mm]

Thus if I set

Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC");
...

then the output looks like this

2009-01-28Z

You can replace "UTC" by "GMT" or "".

Can I get rid of the "Z"?

Answer

Michał Niklas picture Michał Niklas · Mar 30, 2011

I had the same problem and it is possible to remove timezone from dates!

You can use your own created ConvertUtil.

At first you must create class with your customized convert method/methods:

public class myConvertUtil extends org.apache.axis2.databinding.utils.ConverterUtil
    {
    public static String convertToString(Date value)
        {
        // return customized Date format
        }
    }

Then you must set this class as SYSTEM_PROPERTY_ADB_CONVERTERUTIL:

String convert_class = "com.firm.myConvertUtil";
System.setProperty(ConverterUtil.SYSTEM_PROPERTY_ADB_CONVERTERUTIL, convert_class);