生成客户端soap时,wsdl日期类型转换为XMLGregorianCalendar

时间:2018-06-08 12:09:54

标签: java cxf wsimport

我无法理解为什么我的字段dateTransaction

生成soap客户端后,

date类型更改为XMLGregorianCalendar(使用wsimpot或cxf maven插件)

<xs:schema targetNamespace="http://www.xxxxxx.xxr/xx/wsdl/service/objets/v1" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.xxxxxx.xxr/xx/wsdl/service/objets/v1" xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="RequeteService" type="RequeteService"/>

            <xs:element name="dateTransaction" type="xs:date" minOccurs="1" maxOccurs="1"/>

    </xs:complexType>
</xs:schema>

这是我生成的课程:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "RequeteService", propOrder = {

    "dateTransaction",
    ....
})
    public class RequeteService{

      .....
        @XmlSchemaType(name = "date")
        protected XMLGregorianCalendar dateTransaction;

这是我的插件

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxws-maven-plugin</artifactId>
                <version>2.5</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>wsimport</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <useJdkToolchainExecutable>false</useJdkToolchainExecutable>
                    <wsdlDirectory>${project.basedir}/src/main/resources/wsdl</wsdlDirectory>
                    <packageName>xxxx.xxxx.ws.api</packageName>
                    <keep>true</keep>
                    <sourceDestDir>${project.basedir}/target/generated/src/main/java</sourceDestDir>
                </configuration>
            </plugin>

1 个答案:

答案 0 :(得分:0)

这是XDK“日期”类型的JDK(和XSD)标准处理的一部分。 XMLGregorianCalendar处理所有XML和时区细节。如果要将xml日期(或dateTime)属性映射到其他Java date(时间)对象,则可以使用绑定文件通过Adapter将该文件映射到其他对象。

这是有关DZone的文章: Customizing XML date(time) field generation w/ XJB

相关问题