gpt4 book ai didi

java - jaxws 中的绑定(bind)文件类型转换被忽略

转载 作者:太空宇宙 更新时间:2023-11-04 07:27:12 24 4
gpt4 key购买 nike

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

绑定(bind)文件:

<?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...
...

最佳答案

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

<?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>

关于java - jaxws 中的绑定(bind)文件类型转换被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18362269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com