JAX-WS可以将XSD日期(xs:dateTime)映射到Java日历吗?

时间:2010-11-16 21:56:02

标签: java datetime calendar jax-ws

可以JAX-WSXML schema datexs:dateTime)(包括其时区)映射到Java Calendar吗?

2 个答案:

答案 0 :(得分:2)

是的,它可以。

合同第一种方法
您需要使用jaxb:javaType元素。有一些一般性信息here以及您需要做的事情的示例here

合同最后方法

@WebMethod(operationName = "getTest")
public Calendar getTest(@WebParam(name = "input") Calendar input) {
  input.roll(Calendar.DAY_OF_YEAR, 1);
  return input
}

将映射到:

<xs:complexType name="getTest">
  <xs:sequence>
    <xs:element name="input" type="xs:dateTime" minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="getTestResponse">
  <xs:sequence>
    <xs:element name="return" type="xs:dateTime" minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

答案 1 :(得分:1)

我认为它默认会起作用; JAXB(JAX-WS实现使用的数据绑定器)应该知道如何在XML值和java.util.Calendar之间进行转换。

如果没有,则与XML一起使用的默认日期/时间数据类型是javax.xml.datatype.XMLGregorianCalendar,可以使用方法toGregorianCalendar()(其类型为java.util.GregorianCalendar,java.util)进行转换。日历子类)。因此,一种可能性是将数据绑定到XMLGregorianCalendar,然后在访问时来回转换。这也可以通过使用XMLJavaTypeAdapter自动化。