2009-07-26 20 views
5

En Java EE 1.4 con JAX-RPC 1.1, cómo puedo exponer el servicio web, por lo que wsdl tiene un tipo complejo (persona) donde una de las propiedades de la persona es una fecha que se muestra en WSDL/XSD como solo una fecha (como una fecha de nacimiento) en lugar de una fecha y hora (donde no se desea la hora) en WSDL/XSD?Servicio web Java, fecha xsd en lugar de dateTime

Me gustaría que el xsd referencia en el WSDL tener

<xs:element name="birthdate" type="xs:date"/> 

en lugar de

<xs:element name="birthdate" type="xs:dateTime"/> 

java.util.Calendar y java.util.Date ambos parecen causar el tipo de datos xsd a ser dateTime cuando se representa en wsdl/xsd.

Sé que Java EE 1.4 no tiene las anotaciones como java EE 5, pero ¿hay alguna manera de decirle al servicio web que use el tipo de datos xs: date?

Respuesta

1

De hecho, descubrí cómo hacerlo correctamente.

en el WEB-INF/wsdl/(schemaname) .xsd Cambié el tipo de datos a la fecha de dateTime y vuelvo a implementar el servicio y funciona con mis tipos java.util.Calendar existentes.

0

Según el IBM docs, tiene razón, tanto la fecha como la fechaMapa del tiempo al Calendario. No parece haber una forma estándar de usar solo la parte de la fecha, por supuesto que podría roll your own (curiosamente, la segunda página del artículo al que se hace referencia dice que la fecha es solo para fechas, pero la página 3 confirma que se asigna a Calendario).

Como referencia, hay una pregunta similar sobre doing this in WCF.

+1

Gracias por esta respuesta, es útil, pero no me ayuda directamente a resolver mi problema de cómo hacer que el servicio web exponga un wsdl con un campo xs: date. La aplicación cliente solicitó que el wsdl exponga solo una fecha, no dateTime. – jasonmw

1

No creo que pueda lograr esto, JAX-RPC simplemente no tiene la flexibilidad (razón por la cual se eliminó en JavaEE 5).

En general, generalmente encuentro que los generadores WSDL no tienen el poder expresivo para generar el WSDl exacto que quiero, y por lo tanto tiendo a usarlos para generar un WSDL como punto de partida, y luego modificar el resultado. A continuación, servidor el WSDL como un archivo estático en lugar de uno generado. No es ideal, pero tampoco es gran cosa.

Cuestiones relacionadas