Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Axis2 - Date Format

Tags:

java

xml

xsd

axis2

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"?

like image 632
Dynamicbyte Avatar asked Aug 28 '09 11:08

Dynamicbyte


1 Answers

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);
like image 125
Michał Niklas Avatar answered Sep 28 '22 04:09

Michał Niklas