利用Axis2生成Stub后,使用中发现Date类型在转换为xml String的时候都带有时区(Timezone)信息。而自己的系统并不认这种日期格式。例如:
Axis2生成的日期字符串形如 yyyy-MM-dd+hh:mm
自己的系统只认yyyy-MM-dd
所以,如何去掉后面的TimeZone信息呢?
1. 创建转换类继承org.apache.axis2.databinding.utils.ConverterUtil
2. 重载publicstaticStringconvertToString(Datevalue)方法
原方法
public static String convertToString(Date value) {
// lexical form of the date is '-'? yyyy '-' mm '-' dd zzzzzz?
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(value);
if (!calendar.isSet(Calendar.ZONE_OFFSET)) {
calendar.setTimeZone(TimeZone.getDefault());
}
StringBuffer dateString = new StringBuffer(16);
appendDate(dateString, calendar);
appendTimeZone(calendar, dateString);
return dateString.toString();
}
新方法中,去掉appendTimeZone(calendar, dateString);一行,就可以了。
3. 在系统变量中传入新类。 例如:com.util.ConverterUtil是新的类
System.setProperty(ConverterUtil.SYSTEM_PROPERTY_ADB_CONVERTERUTIL, "com.util.ConverterUtil");