Axis2 JAXWS服务xs:date XMLGregorianCalendar

时间:2013-04-04 16:37:58

标签: jax-ws axis2

我正在使用带有JAX-WS RI 2.2.3的axis2-1.6.2。

我正在使用WSDL生成骨架,存根和模型类。 以下是WSDL的代码片段。

<xs:complexType name="dailyBooking">
<xs:sequence>
<xs:element minOccurs="0" name="day" qualified="true" type="xs:date" />
<xs:element minOccurs="0" name="noOfBookings" type="xs:int" />
</xs:sequence>
</xs:complexType>

它生成以下类

public class DailyBooking {

    protected Integer noOfBookings;
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar day;

我想生成java.util.Date而不是XMLGregorianCalendar。 怎么可能。

1 个答案:

答案 0 :(得分:1)

实现此目的的快速而肮脏的方法是在xsd中指定一个注释,该注释将指示JAXB要转换的类型以及如何转换它们。试试这个:

  1. 将JAXB名称空间添加到xsd文件(如果您的类型定义嵌入在wsdl中,则添加wsdl本身部分)

    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    jaxb:version="2.0"
    
  2. 将以下注释元素添加为<schema/>元素的子元素或xsd文件

       <xs:annotation>
          <xs:appinfo>
              <jaxb:globalBindings mapSimpleTypeDef="false" choiceContentProperty="true">
                 <jaxb:javaType name="java.util.Date" xmlType="xs:date"
                       parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
                       printMethod="javax.xml.bind.DatatypeConverter.printDate"/>
                  </jaxb:globalBindings>
          </xs:appinfo>
       </xs:annotation>
    
  3. 一些注意事项:

    1. javaType元素指定要转换为的java数据类型和

    2. xmlType指定它在架构定义中的相应位置。

    3. 使用globalBindings表示该xml类型的所有匹配都将受到您指定的自定义的影响

相关问题