Eclipselink无法正确处理时区偏移

时间:2015-11-24 13:43:16

标签: spring jaxb spring-boot weblogic eclipselink

我正在使用部署到Weblogic 12.1.3.0.0的Spring启动。我遇到的问题是日期在XML输入上被解组。

我提供有效的ISO-8601日期,时区偏移的格式导致org.eclipse.persistence.exceptions.ConversionException。

从堆栈跟踪中,它将eclipselink的版本显示为:eclipselink.jar:2.5.2.v20140319-9ad6abd

此日期处理正确:

2015-11-02T11:15:47.239-的 05:00

虽然这个导致例外:

2015-11-02T11:15:47.239- 0500

根据spec,两者都有效。

提供的Jackson unmarshaller正确处理这种格式。

我不能要求客户端重新格式化输入,因为当客户端在Accept-Type中请求application / json时,此格式是默认输出。

我是否需要更换eclipselink?

ifelse

1 个答案:

答案 0 :(得分:0)

代码显示EclipseLink正在使用DatatypeFactoryImpl并将字符串传递给newXMLGregorianCalendar方法。链接I found表示它匹配newXMLGregorianCalendar(x).toXMLFormat()。equals(x),newXMLGregorianCalendar的javadoc使用http://www.w3.org/TR/xmlschema-2/#isoformats指向它,但不包括所有词法表示iso 8601。

我不知道是否有办法改变内部用于转换的实现 - 更有知识的人可能能够进一步提供帮助。但您可以通过在映射上定义XmlAdapter来更改使用的内容,以便为您处理格式。