在使用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数据类型?
答案 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的类似问题,请参考。