Java web服务和.net客户端日期数据类型插入性问题
有一个.net客户端调用java web服务API - addSchedule(Date startDate,Date endDate)。 endDate是可选的 - 即客户端可以传递endDate = null并且一切正常。但问题是 - .Net客户端不能将空值赋给Date变量类型。Java web服务和.net客户端日期数据类型插入性问题
我们再次检查了一件事情,如果java Web服务响应将空日期值传递给.net客户端,则这将作为Date.MIN_VALUE通过.Net接收。所以我们认为如果.Net传递endDate = Date.MIN_VALUE,java会得到endDate = null。但是java获取Date.MIN_VALUE作为有效日期。
所以我们被卡住了。请提出一个很好的解决方法。
我们需要添加在Java中的nillable =真webservice方法: - addSchedule(Date startDate, @XmlElement(nillable=true) Date endDate)
。有了这个新的wsdl定义,.Net客户端生成AddScheule(DateTime, <Nullable>DateTime)
。这受到metro 2.2版本jar(jaxb和jaxws.jar)的支持。如果jre6具有这些jar的旧版本,请下载这些jar的2.2版本并放入JRE_HOME/lib/endorsed文件夹中。使用相同的jre路径来构建您的项目。
在tomcat上部署应用程序时,请复制目录CATALINA_HOME/endorsed中的jaxb和jaxws.jar [2.2版本]。你已准备好出发。
尝试使用Nullable DateTime(Nullable<DateTime>
或DateTime?
),因为它可以保留空值。一个正常的值类型(如日期时间)不能持有空,并且会有一个默认值(在DateTime
这是DateTime.MinValue
的情况,但对于int
为0)
当我们通过可空,它说,你可以不通过可空,日期预计在addSchedule –
你需要让所有相关的代码中使用'日期时间?'/'可空'或使用'Value'财产(注:如果你访问'Value'属性为null时,它会抛出一个异常!你可以使用'HasValue'属性来检查或者比较它为空 –
我没有太多的.Net经验。好奇的是什么应该是在addSchedule,在Java端日期dataType,所以在.net端客户端包装调用看起来像AddSchdule(日期时间,可为空) –