Java Web服务和.net客户端Date数据类型互操作性问题

时间:2011-07-15 12:47:48

标签: java .net web-services date types

有一个.net客户端调用java web services api - addSchedule(Date startDate,Date endDate)。 endDate是可选的 - 即客户端可以传递endDate = null,一切都很好。但问题是 - .Net客户端无法将null赋给Date变量类型。

我们检查了一件事,如果java Web服务响应将null Date值传递给.net客户端,则由.Net接收为Date.MIN_VALUE。所以我们想到如果.Net传递endDate = Date.MIN_VALUE,那么java将得到endDate = null。但是java将Date.MIN_VALUE作为有效日期。

所以我们被困住了。请提出一个好的解决方法。

2 个答案:

答案 0 :(得分:2)

尝试使用Nullable DateTime(Nullable<DateTime>DateTime?),因为它可以保存空值。普通值类型(如DateTime)不能保留null,并且将具有默认值(在DateTime的情况下,这是DateTime.MinValue,但对于int,它是0)< / p>

答案 1 :(得分:0)

我们需要在Java webservice方法中添加nillable = true: - addSchedule(Date startDate, @XmlElement(nillable=true) Date endDate)。使用这个新的wsdl定义,.Net客户端生成AddScheule(DateTime, <Nullable>DateTime)。这是由metro 2.2版本jars(jaxb和jaxws.jar)支持的。如果jre6有这些jar的旧版本,请下载这些jar的2.2版本并放在JRE_HOME / lib / endorsed文件夹中。使用相同的jre路径来构建项目。

在tomcat上部署应用程序时,请在目录CATALINA_HOME / endorsed中复制jaxb和jaxws.jar [2.2版本]。你很高兴。