我已经使用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方法。
知道我在这里缺少什么吗?
答案 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