【发布时间】:2015-08-05 23:39:01
【问题描述】:
这是我对 CXF 的问题。我有一个用 CXF 编写的 SOAP1.2 服务。该服务并不复杂,它基本上放置了一个 XML int DB (Oracle 11.x)。 WSDL 中的所有日期都定义为 xsd:date。
我定义了以下 jaxb 绑定
<jxb:javaType name="java.util.Date" xmlType="xsd:date"
parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDate"
printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDate" />
利用这些的Adapter类如下
public class Adapter2
extends XmlAdapter<String, Date>
{
public Date unmarshal(String value) {
return (org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDate(value));
}
public String marshal(Date value) {
return (org.apache.cxf.xjc.runtime.DataTypeAdapter.printDate(value));
}
}
由于 cxf..runtime.DataTypeAdapter 总是产生 java.util.Date,所以总是添加一个时间,这反过来又给 Oracle 带来问题,因为 Oracle 用于 xml 验证的本机过程在遇到带时间的日期时会产生错误。 (更改数据库设置不是一种选择)。
可以使用哪些库/类来编组/解组 xsd:date 到没有时间的日期?还是我必须编写自己的类来扩展 XmlAdapter?
【问题讨论】: