【发布时间】:2011-04-23 12:27:04
【问题描述】:
我正在使用 CXF 来托管 Web 服务在 Spring 上下文中,这使得 JAX-WS 成为默认绑定。而且我使用的是 Java-First,这意味着带注释的端点接口和类。
由于 JAX-WS 的默认绑定使用 XMLGregorianCalendar 类作为日期,当我调用我的 Web 服务并传递 java.util.Date 时,它会在服务器上转换为 XMLGregorianCalendar。
有很多帖子和文档关于如何更改此以将日期值绑定到java.util.Date,但都与 wsdl2java 工具有关,例如:
<jaxws:bindings wsdlLocation="YOUR_WSDL_LOCATION"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='THE_NAMESPACE_OF_YOUR_SCHEMA']">
<jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:javaType name="java.util.Date" xmlType="xs:dateTime"
parseMethod="org.apache.cxf.tools.common.DataTypeAdapter.parseDateTime"
printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDateTime"/>
</jxb:globalBindings>
</jaxws:bindings>
</jaxws:bindings>
由于我使用的是 Spring,我正在寻找一种在 Spring 上下文配置文件(或 CXF 配置文件)中执行此操作的方法。我的文件的 sn-p:
<jaxws:endpoint id="jaxwsDocumentGroupWsEndpoint" implementor="#documentGroupWsEndpoint" address="/documentGroup">
<!-- SOMETHING TO WRITE HERE TO TELL CXF TO USE java.util.Date ??? -->
</jaxws:endpoint>
【问题讨论】:
-
如果有人遇到同样的问题,我可以使用 JAXB 注释解决我的问题。看到这个问题:stackoverflow.com/questions/3953433/…
-
您能否更具体一点,您要自定义什么工件?如果是 JAX-WS 工件 (SEI),则为接口提供 Java 代码。或者,如果那是 JAXB bean,请向我们展示生成的代码。
标签: java web-services jax-ws cxf