CXF端点上的日期类型问题

时间:2010-06-02 20:33:08

标签: java .net web-services spring cxf

我已经使用spring配置了一个简单的CXF endpoit,它暴露了一个带有java.util.Date属性的简单对象。 一旦使用.NET客户端远程调用,date属性始终为null。

endopit:

<jaxws:endpoint id="simpleService" implementor="cxf.base.SimpleServiceImpl" address="/SimpleService" />

.NET调用:

    SimpleServiceClient client = new SimpleServiceClient();
    simpleObject simpleObject = new simpleObject();
    simpleObject.date = new DateTime(2010, 1, 1);
    simpleObject.name = "Simple Object";

    txtResult.Text = client.toString(simpleObject);

其中toString是exposde webservice方法。

知道我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:1)

我猜这是在服务器端的marshall阶段有错误。如果您不确定,请在服务器端进行一些日志记录。此外,tcp / ip监视器可以显示传输的SOAP元素。例如,Eclipse具有出色的tcp / ip监视器视图。

如果这是一个马歇尔错误,并且您使用JAXB进行编组,那么您必须将java.util.Date值转换为javax.xml.datatype.XMLGregorianCalendar值。

可以使用javax.xml.datatype.DatatypeFactory类完成此操作。

请务必使用与日期元素匹配的重载newXMLGregorianCalendar()方法。

包含不同日期和时间XSD元素的良好信息的页面: http://www.w3schools.com/Schema/schema_dtypes_date.asp