【问题标题】:Binding File type conversions in jaxws being ignoredjaxws 中的绑定文件类型转换被忽略
【发布时间】:2013-08-21 15:58:11
【问题描述】:

我正在尝试使用外部绑定文件将 XMLGregorianCalendar 转换为 java.util.Date,但它没有转换,它仍然是 XMLGregorianCalendar 而不是 java.util.Date,谁能发现我做错了什么?我怀疑我的绑定文件中有问题,因为它是在生成 pojo 时被拾取的。

绑定文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<jaxws:bindings version="2.0" 
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <jaxws:globalBindings> 

        <jaxws:javaType name="java.util.Date" xmlType="xsd:dateTime" 
            parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" 
            printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/>

        <jaxws:javaType name="java.util.Date" xmlType="xsd:time" 
            parseMethod="javax.xml.bind.DatatypeConverter.parseTime" 
            printMethod="javax.xml.bind.DatatypeConverter.printTime"/>

        <jaxws:javaType name="java.util.Date" xmlType="xsd:date" 
            parseMethod="javax.xml.bind.DatatypeConverter.parseDate" 
            printMethod="javax.xml.bind.DatatypeConverter.printDate"/> 

    </jaxws:globalBindings>

 </jaxws:bindings>  

pom.xml 中的配置文件:

 <profiles>
    <profile>
      <id>website</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.jvnet.jax-ws-commons</groupId>
              <artifactId>jaxws-maven-plugin</artifactId>
              <version>2.2</version>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.jvnet.jax-ws-commons</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>wsimport</id>
                <phase>generate-sources</phase>
                <goals>
                  <goal>wsimport</goal>
                </goals>
                <configuration>
                  <packageName>za.co.website.application.model</packageName>
                  <sourceDestDir>src/main/java</sourceDestDir>
                  <wsdlFiles>
                    <wsdlFile>
                      ${basedir}/src/jaxws/wsdl/Application.wsdl
                    </wsdlFile>
                  </wsdlFiles>
                  <target>2.1</target>
                  <bindingFiles>
                    <bindingFile>
                        ${basedir}/src/jaxws/binding/bindings.xml
                    </bindingFile>
                  </bindingFiles>                 
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

在调用构建脚本时使用 -X 显示它正在被拾取 mvn clean install -DskipTest -X

...
[DEBUG] The wsdl File is '...\website-application/src/jaxws/wsdl/Application.wsdl' from 'file:/.../website-application/src/jaxws/wsdl/Application.wsdl'
[INFO] Processing: file:/.../website-application/src/jaxws/wsdl/Application.wsdl
[DEBUG] jaxws:wsimport args: [-keep, -s, ...\website-application\src\main\java, -encoding, UTF-8, -Xnocompile, -p, za.co.website.application.model, -target, 2.1, -b, ...\website-application\src\jaxws\binding\bindings.xml]
[INFO] jaxws:wsimport args: [-keep, -s, ...\website-application\src\main\java, -encoding, UTF-8, -Xnocompile, -p, za.co.website.application.model, -target, 2.1, -b, ...\website-application\src\jaxws\binding\bindings.xml, file:/.../website-application/src/jaxws/wsdl/Application.wsdl]
parsing WSDL...
...

【问题讨论】:

    标签: java maven jax-ws jax-ws-customization


    【解决方案1】:

    添加node="wsdl:definitions/wsdl:types/xs:schema"jaxws:globalBindings 应该可以解决问题,因此绑定文件应该如下所示:

    <?xml version="1.0" encoding="UTF-8" ?> 
    <jaxws:bindings version="2.0" 
          xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          node="wsdl:definitions/wsdl:types/xs:schema">
    
        <jaxws:globalBindings> 
            <jaxws:javaType name="java.util.Date" xmlType="xsd:dateTime" 
                parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" 
                printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/>
            <jaxws:javaType name="java.util.Date" xmlType="xsd:time" 
                parseMethod="javax.xml.bind.DatatypeConverter.parseTime" 
                printMethod="javax.xml.bind.DatatypeConverter.printTime"/>
            <jaxws:javaType name="java.util.Date" xmlType="xsd:date" 
                parseMethod="javax.xml.bind.DatatypeConverter.parseDate" 
                printMethod="javax.xml.bind.DatatypeConverter.printDate"/> 
        </jaxws:globalBindings>
    </jaxws:bindings>
    

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 2020-08-29
      • 2020-09-27
      • 2013-09-15
      • 2019-05-02
      • 2017-03-17
      • 2018-06-09
      • 1970-01-01
      • 2021-05-31
      相关资源
      最近更新 更多