5

在使用 JAX-RPC 1.1 的 Java EE 1.4 中,我如何公开 Web 服务,因此 wsdl 具有复杂类型(人),其中人的属性之一是日期,在 WSDL/XSD 中仅显示为日期(例如生日)而不是 WSDL/XSD 中的 dateTime(不需要时间)?

我希望 wsdl 中引用的 xsd 有

<xs:element name="birthdate" type="xs:date"/>

代替

<xs:element name="birthdate" type="xs:dateTime"/>

java.util.Calendar 和 java.util.Date 在 wsdl/xsd 中呈现时似乎都导致 xsd 数据类型为 dateTime。

我知道 java EE 1.4 没有像 java EE 5 这样的注释,但是有没有办法告诉 Web 服务使用 xs:date 数据类型?

4

3 回答 3

1

我认为您无法实现这一点,JAX-RPC 只是没有灵活性(这就是它在 JavaEE 5 中被杀死的原因)。

一般来说,我通常发现 WSDL 生成器不具备生成我想要的确切 WSDl 的表达能力,因此我倾向于使用它们来生成 WSDL 作为起点,然后修改结果。然后,您将 WSDL 作为静态文件而不是生成的文件提供服务。这并不理想,但也不是什么大问题。

于 2009-07-27T16:37:02.097 回答
1

我实际上确实想出了如何正确地做到这一点。

在 WEB-INF/wsdl/(schemaname).xsd 中,我将数据类型从 dateTime 更改为 date 并重新部署服务,它适用于我现有的 java.util.Calendar 类型。

于 2009-07-28T19:25:23.273 回答
0

根据IBM 文档,您是对的,日期和日期时间都映射到日历。似乎没有仅使用日期部分的标准方法,当然您可以自己滚动(有趣的是,引用文章的第二页说日期仅用于日期,但第 3 页确认它映射到日历)。

作为参考,在 WCF 中有一个类似的问题。

于 2009-07-26T21:35:33.693 回答