如何使用类自定义解决文件生成冲突

如何使用类自定义解决文件生成冲突,第1张

如何使用类自定义解决文件生成冲突

您面临的错误消息基本上表明

types
您两次使用了wsdl部分中的某些名称。在您的情况下, 所有
<element>
标记与其对应的类型(定义为
<complexType>
)具有相同的名称。

例:

  <s:element name="SearchFlights">    <s:complexType>      <s:sequence>        <s:element minOccurs="0" maxOccurs="1" name="SoapMessage" type="tns:SearchFlights" />      </s:sequence>    </s:complexType>  </s:element>  <s:complexType name="SearchFlights">    <s:complexContent mixed="false">      <s:extension base="tns:SoapMessagebase">        <s:sequence>          <s:element minOccurs="0" maxOccurs="1" name="Request" type="tns:SearchFlightsRequest" />          <s:element minOccurs="0" maxOccurs="1" name="Response" type="tns:SearchFlightsResponse" />        </s:sequence>      </s:extension>    </s:complexContent>  </s:complexType>

这很不常见。

解决这些问题基本上有两种选择:

使用autoNameResolution

 <plugin>     <groupId>org.jvnet.jaxb2.maven2</groupId>     <artifactId>maven-jaxb2-plugin</artifactId>     <version>0.13.1</version>     <executions>         <execution>  <goals>      <goal>generate</goal>  </goals>         </execution>     </executions>     <configuration>         <args>  <arg>-XautoNameResolution</arg>         </args>         <schemaLanguage>WSDL</schemaLanguage>         <generatePackage>hello.wsdl</generatePackage>         <schemas>  <schema>      <url>http://www5v80.elsyarres.net/service.asmx?wsdl</url>  </schema>          </schemas>      </configuration>  </plugin>

该插件将通过在每个冲突名称后附加数字来解决所有命名冲突。在上述 SearchFlights 情况下,这将导致 生成 SearchFlights 和_SearchFlights2_ 。

更好的方法 是使用绑定文件提前解决所有名称冲突。绑定文件主要包含

XPATH
表达式和转换规则。 以下是绑定到 每个 声明名称的绑定文件:

<?xml version="1.0" encoding="UTF-8"?><jaxws:bindings wsdlLocation="http://www5v80.elsyarres.net/service.asmx?wsdl" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" version="2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">    <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='ElsyArres.API']">        <jaxb:schemaBindings> <jaxb:nameXmlTransform>     <jaxb:elementName suffix="Elem"/> </jaxb:nameXmlTransform>        </jaxb:schemaBindings>    </jaxws:bindings></jaxws:bindings>

对于

jaxb:nameXmlTransform
后缀和其他类型的xml元素(如类型),还有其他选项。

可悲的是,我无法使用

org.jvnet.jaxb2.maven2:maven-jaxb2-plugin
(但我确定有一个有效的配置)来使用此绑定文件。

尽管如此,它仍可用于

org.prehaus.mojo:jaxws-maven-plugin
和以下配置。

<plugin>    <groupId>org.prehaus.mojo</groupId>    <artifactId>jaxws-maven-plugin</artifactId>    <version>2.4.1</version>    <executions>        <execution> <goals>     <goal>wsimport</goal> </goals>        </execution>    </executions>    <configuration>        <bindingFiles>         <bindingFile>${basedir}/src/main/resources/bindings.xjb</bindingFile>        </bindingFiles>        <wsdlUrls> <wsdlUrl>http://www5v80.elsyarres.net/service.asmx?wsdl</wsdlUrl>        </wsdlUrls>        <vmArgs> <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>        </vmArgs>    </configuration></plugin>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5438982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存