有一个.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作为有效日期。
所以我们被困住了。请提出一个好的解决方法。
答案 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版本]。你很高兴。