Java Web 服务,xsd 日期而不是 dateTime
在使用 JAX-RPC 1.1 的 Java EE 1.4 中,我如何公开 Web 服务,因此 wsdl 具有复杂类型(人员),其中人员的属性之一是日期,该日期在 WSDL/XSD 中仅显示为日期(例如出生日期)而不是 WSDL/XSD 中的日期时间(不需要时间)?
我希望 wsdl 中引用的 xsd 代替
<xs:element name="birthdate" type="xs:date"/>
java.util.Calendar
<xs:element name="birthdate" type="xs:dateTime"/>
和 java.util.Date 似乎都会导致 xsd 数据类型在 wsdl/xsd 中呈现时为 dateTime。
我知道 java EE 1.4 没有像 java EE 5 那样的注释,但是有没有办法告诉 Web 服务使用 xs:date 数据类型?
In Java EE 1.4 using JAX-RPC 1.1, how can i expose web service, so the wsdl has a complex type (person) where one of the properties of the person is a date which is shown in the WSDL/XSD as only a date (such as a birthdate) instead of a dateTime (where the time is not wanted) in the WSDL/XSD?
i would like the xsd referenced in the wsdl to have
<xs:element name="birthdate" type="xs:date"/>
instead of
<xs:element name="birthdate" type="xs:dateTime"/>
java.util.Calendar and java.util.Date both seem to cause the xsd datatype to be dateTime when rendered in in wsdl/xsd.
I know java EE 1.4 doesnt have the annotations like java EE 5, but is there any way to tell the web service to use the xs:date datatype?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为你无法实现这一点,JAX-RPC 只是不具备灵活性(这就是它在 JavaEE 5 中被淘汰的原因)。
一般来说,我通常发现 WSDL 生成器不具备生成我想要的确切 WSDl 的表达能力,因此我倾向于使用它们生成 WSDL 作为起点,然后修改结果。 然后,您可以将 WSDL 作为静态文件而不是生成的文件来提供服务。 这并不理想,但也没什么大不了的。
I don't think you'll be able to achieve this, JAX-RPC just doesn't have the flexibility (which is why it was killed in JavaEE 5).
In general, I usually find that WSDL generators do not have the expressive power to generate the exact WSDl I want, and so I tend to use them to generate a WSDL as a starting point, and then modifying the result. You then server up the WSDL as a static file rather than as a generated one. It's not ideal, but it's not a big deal either.
我实际上确实弄清楚了如何正确地做到这一点。
在 WEB-INF/wsdl/(schemaname).xsd 中,我将数据类型从 dateTime 更改为 date 并重新部署服务,它适用于我现有的 java.util.Calendar 类型。
I actually did figure out how to do this properly.
in the WEB-INF/wsdl/(schemaname).xsd I changed the datatype to date from dateTime and redeploy the service and it works with my existing java.util.Calendar types.
根据 IBM 文档 您是对的,日期和日期时间都映射到日历。 似乎没有仅使用日期部分的标准方法,当然您可以 自己动手(有趣的是,引用文章的第二页说日期仅适用于日期,但第 3 页确认它映射到日历)。
作为参考,有一个关于在 WCF 中执行此操作的类似问题。
According to the IBM docs you are right, both date and dateTime map to Calendar. There doesn't seem to be a standard way to use only the date part, of course you could roll your own (interestingly the second page of the referenced article says date is for dates only but page 3 confirms it maps to Calendar).
For reference there's a similar question about doing this in WCF.