我在集成第三方Web服务时遇到问题。 我收到以下错误: [错误]无法在项目pcm_portal上执行目标org.apache.cxf:cxf-codegen-plugin:2.4.2:wsdl2java(generate-sources):由JAXB抛出:'string15'已在模式的第305行第2列定义... - > [帮助1]
实际上我理解错误,这个文件包含相同目标命名空间的几个模式,我们可以找到两个模式中定义的相同simpleType(string15)。
这是这样的:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://siebel.com/CustomUI" ...>
<types>
<!-- ... -->
<xsd:schema elementFormDefault="qualified"
attributeFormDefault="unqualified"
targetNamespace="http://myNs/"
xmlns:xsdLocal3="http://myNs/">
<!-- ... -->
<xsd:simpleType name="string15">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="15"></xsd:maxLength>
</xsd:restriction>
</xsd:simpleType>
<!-- ... -->
</xsd:schema>
<!-- ... -->
<xsd:schema elementFormDefault="qualified"
attributeFormDefault="unqualified"
targetNamespace="http://myNs/"
xmlns:xsdLocal3="http://myNs/">
<!-- ... -->
<xsd:simpleType name="string15">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="15"></xsd:maxLength>
</xsd:restriction>
</xsd:simpleType>
<!-- ... -->
</xsd:schema>
<!-- ... -->
</types>
</definitions>
我的问题是
1)有没有办法让wsdl2java处理这样的文件?
今天我通过maven cxf-codegen-plugin使用它,并配置了这个:
<defaultOptions>
<extraargs>
<extraarg>-exsh</extraarg>
<extraarg>true</extraarg>
<extraarg>-xjc-npa</extraarg>
</extraargs>
</defaultOptions>
2)如果没有人知道参考文件可能是我的争论,因为给我wsdl的团队说没有问题(事实上SoapUI对这个WSDL没有任何麻烦)?
答案 0 :(得分:0)
我过去一直都是同样的问题。
我从&#34; cxf-codegen-plugin&#34;
中排除了模式的生成e.g。
<extraarg>-nexclude</extraarg>
<extraarg>http://myNs/</extraarg>
我在另一个文件(XSD)中提取了架构,我使用了&#34; maven-plugin-jaxb2&#34;生成它们。
显然,您不能使用相同的命名空间声明两个相同的对象,因此必须将模式与相同的命名空间合并。
我希望这个解决方案有助于解决您的问题。