您面临的错误消息基本上表明
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>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)