Estoy usando CXF para alojar servicios web en un contexto de Spring, que hace que JAX-WS sea el enlace predeterminado. Y estoy usando Java-First, lo que significa interfaces y clases de punto final anotadas.Cómo decirle a Apache CXF que use java.util.Date en Spring Configuration
Desde vinculante para JAX-WS utiliza por defecto XMLGregorianCalendar
clase para fechas, cuando llamo a mi servicio de banda que pasa un java.util.Date
se convierte en XMLGregorianCalendar
en el servidor.
Hay muchos mensajes y documentación sobre cómo cambiar este para unirse a los valores de fecha java.util.Date
, pero todos están relacionados con la herramienta de wsdl2java, tales como:
<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>
Desde que estoy usando primavera, estoy buscando una forma de hacer esto en los archivos de configuración de contexto Spring (o archivos de configuración CXF). Un fragmento de mi archivo:
<jaxws:endpoint id="jaxwsDocumentGroupWsEndpoint" implementor="#documentGroupWsEndpoint" address="/documentGroup">
<!-- SOMETHING TO WRITE HERE TO TELL CXF TO USE java.util.Date ??? -->
</jaxws:endpoint>
En caso de que alguien haya tenido el mismo problema, podría resolver el mío usando anotaciones JAXB. Consulte esta pregunta: http://stackoverflow.com/questions/3953433/tell-jaxb-to-unmarshal-xsdatetime-to-date-class-using-annotations – Iravanchi
¿Puede ser más específico sobre qué artefacto desea personalizar? Si se trata de artefacto JAX-WS (SEI), entonces proporcione un código Java para la interfaz. O si ese es el bean JAXB, muéstranos el código generado. –