Jaxb WSDL定制:XMLGregorianCalender到java.util.Date

Jaxb WSDL定制:XMLGregorianCalender到java.util.Date,jaxb,wsimport,jax-ws-customization,Jaxb,Wsimport,Jax Ws Customization,我有几个wsdl文件,几乎有几百个。每当我为它们创建客户机jaxb客户机类时,jaxb就会自动将所有日期/时间字段映射到XMLGregorianCalendar。经过大量的谷歌搜索,我发现提供一个单独的绑定文件是唯一的解决方案 我不想提供wsdl位置,因为我有很多,否则我必须为每个wsdl创建单独的绑定文件 下面是我使用的绑定文件 <bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0" > <glo

我有几个wsdl文件,几乎有几百个。每当我为它们创建客户机jaxb客户机类时,jaxb就会自动将所有日期/时间字段映射到XMLGregorianCalendar。经过大量的谷歌搜索,我发现提供一个单独的绑定文件是唯一的解决方案

我不想提供wsdl位置,因为我有很多,否则我必须为每个wsdl创建单独的绑定文件

下面是我使用的绑定文件

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0" >
    <globalBindings>
        <javaType name="java.util.Date" xmlType="xsd:dateTime"  />
    </globalBindings>
</bindings>
我将自定义设置保存在cust.txt中,如wsimport命令中所示,我的DateAdapter类源文件也在同一目录中。这个班没有包装。下面是我的目录结构

³   cust.txt
³   DateAdapter.java
³   
ÃÄÄÄgen
³   ÃÄÄÄorg
³   ³   ÀÄÄÄw3
³   ³       ÀÄÄÄ_2001
³   ³           ÀÄÄÄxmlschema
³   ³                   Adapter1.class
³   ³                   
³   ÀÄÄÄwebservice
³       ÀÄÄÄjaxws
³           ÀÄÄÄgenerated
³                   GetBook.class
³                   GetBookResponse.class
³                   ObjectFactory.class
³                   package-info.class
³                   Book.class
³                   BookService.class
³                   BookServiceImpl.class
³                   ReturnBook.class
³                   ReturnBookResponse.class
³                   
ÀÄÄÄsrc
    ÃÄÄÄorg
    ³   ÀÄÄÄw3
    ³       ÀÄÄÄ_2001
    ³           ÀÄÄÄxmlschema
    ³                   Adapter1.java
    ³                   
    ÀÄÄÄwebservice
        ÀÄÄÄjaxws
            ÀÄÄÄgenerated
                    GetBook.java
                    GetBookResponse.java
                    ObjectFactory.java
                    package-info.java
                    Book.java
                    BookService.java
                    BookServiceImpl.java
                    ReturnBook.java
                    ReturnBookResponse.java

通过使用与您相同的绑定声明解决了此问题,除了my DateAdapter实际上是这样的:

公共类日期适配器{
专用日期适配器(){}
公共静态字符串封送处理(日期){
Calendar cal=GregorianCalendar.getInstance();
校准设定时间(日期);
返回DatatypeConverter.printDateTime(cal);
}
公共静态日期解组(字符串xmlDate){
返回DatatypeConverter.parseDate(xmlDate.getTime();
}
}
它就像一个符咒。XML端我有dateTime,java端我有java.util.Date。实际上,我制作了另一个使用java.time.Instant而不是Date的,我发现它更容易使用

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0" >
    <globalBindings>
        <javaType name="java.util.Date" xmlType="xsd:dateTime"
        parseMethod="DateAdapter.marshal"
            printMethod="DateAdapter.unmarshal" />
    </globalBindings>
</bindings>
C:\Users\stuart\Desktop\code>wsimport -s src -d gen -b cust.txt http://localhost:8080/webservice-jaxws/DummyService?wsdl


parsing WSDL...


generating code...


compiling code...

C:\Users\stuart\Desktop\code\src\org\w3\_2001\xmlschema\Adapter1.java:13: cannot find symbol
symbol  : variable DateAdapter
location: class org.w3._2001.xmlschema.Adapter1
        return (DateAdapter.marshal(value));
                ^
C:\Users\stuart\Desktop\code\src\org\w3\_2001\xmlschema\Adapter1.java:17: cannot find symbol
symbol  : variable DateAdapter
location: class org.w3._2001.xmlschema.Adapter1
        return (DateAdapter.unmarshal(value));
                ^
2 errors
compilation failed, errors should have been reported
³   cust.txt
³   DateAdapter.java
³   
ÃÄÄÄgen
³   ÃÄÄÄorg
³   ³   ÀÄÄÄw3
³   ³       ÀÄÄÄ_2001
³   ³           ÀÄÄÄxmlschema
³   ³                   Adapter1.class
³   ³                   
³   ÀÄÄÄwebservice
³       ÀÄÄÄjaxws
³           ÀÄÄÄgenerated
³                   GetBook.class
³                   GetBookResponse.class
³                   ObjectFactory.class
³                   package-info.class
³                   Book.class
³                   BookService.class
³                   BookServiceImpl.class
³                   ReturnBook.class
³                   ReturnBookResponse.class
³                   
ÀÄÄÄsrc
    ÃÄÄÄorg
    ³   ÀÄÄÄw3
    ³       ÀÄÄÄ_2001
    ³           ÀÄÄÄxmlschema
    ³                   Adapter1.java
    ³                   
    ÀÄÄÄwebservice
        ÀÄÄÄjaxws
            ÀÄÄÄgenerated
                    GetBook.java
                    GetBookResponse.java
                    ObjectFactory.java
                    package-info.java
                    Book.java
                    BookService.java
                    BookServiceImpl.java
                    ReturnBook.java
                    ReturnBookResponse.java