2013-08-21 14 views
1

외부 바인딩 파일을 사용하여 XMLGregorianCalendar를 java.util.Date로 변환하려고하지만 변환하지 않고 java.util.Date 대신 XMLGregorianCalendar를 사용하여 내가 잘못하고있어? 나는 pojos를 생성 할 때 픽업되고 있기 때문에 무언가가 제 바인딩 파일에서 올바르지 않은 것으로 의심됩니다.바인딩 jaxws의 파일 형식 변환이 무시됩니다.

바인딩 파일 :

<?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을 포착되고있어 저를 보여줍니다 설치 -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... 
... 

답변

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>