Java Web服务,xsd而不是dateTime

时间:2009-07-26 18:25:24

标签: java web-services xsd wsdl jax-rpc

在使用JAX-RPC 1.1的Java EE 1.4中,我如何公开Web服务,因此wsdl有一个复杂的类型(person),其中person的一个属性是一个日期,在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似乎都导致xsd数据类型在wsdl / xsd中呈现时为dateTime。

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我确实弄明白了如何正确地做到这一点。

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

答案 2 :(得分:0)

根据IBM docs你是对的,日期和日期时间都映射到日历。似乎没有标准的方法只使用日期部分,当然你可以roll your own(有趣的是,引用文章的第二页说日期仅适用于日期,但第3页确认它映射到日历)

有关doing this in WCF的类似问题,请参考。