Java cxf codegen插件和;两个声明会导致ObjectFactory类发生冲突。”;
我们正试图从中生成一个JavaSOAP客户机,以便与外部服务集成。因为这是一家外部公司,所以对WSDL的更改不是一个选项 当尝试使用cxf codegen插件Maven插件生成客户端时,我们得到以下错误:Java cxf codegen插件和;两个声明会导致ObjectFactory类发生冲突。”;,java,soap,cxf-codegen-plugin,Java,Soap,Cxf Codegen Plugin,我们正试图从中生成一个JavaSOAP客户机,以便与外部服务集成。因为这是一家外部公司,所以对WSDL的更改不是一个选项 当尝试使用cxf codegen插件Maven插件生成客户端时,我们得到以下错误: Two declarations cause a collision in the ObjectFactory class. 该问题与WSDL中的以下声明有关: <s:element name="CallSomeMethod"> <s:complexType>
Two declarations cause a collision in the ObjectFactory class.
该问题与WSDL中的以下声明有关:
<s:element name="CallSomeMethod">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GetSomeDataResult" type="tns:InterfaceReturnCode" />
<s:element minOccurs="0" maxOccurs="1" name="getSomeDataResult" type="tns:GetSomeDataResult" />
</s:sequence>
</s:complexType>
</s:element>
很明显,问题出在哪里。我的问题是,在线通用SOAP客户端似乎可以很好地导入WSDL,所以它至少必须是有效的。我还了解到,在不使用
-p
选项的情况下生成Java代码将导致生成器创建单独的包,这将解决问题。但是,如何使用cxf codegen插件Maven插件做到这一点呢?不确定您是否找到了解决方案,但可能会帮助其他人。
我尝试了以下方法,它对我有效。
我使用cxfcodegenpluginmaven plugin,得到了上面的错误。
所以首先我在pom.xml中使用了-autonamesolution。这解决了一些重复问题,但仍然很少。
因此,在我的pom.xml中,我使用“-p”参数将冲突的名称空间放在不同的目录中,这是有效的
示例(mypom.xml中的代码片段):
${basedir}/src/main/resources/wsdl/.wsdl
http://host.does.not.exist/src/main/resources/wsdl/.wsdl
-客户
-冗长的
-自动命名解析
-p
=
-p
=
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/<wsdl_file>.wsdl</wsdl>
<wsdlLocation>http://host.does.not.exist/src/main/resources/wsdl/<wsdl_file>.wsdl</wsdlLocation>
<extraargs>
<extaarg>-client</extaarg>
<extaarg>-verbose</extaarg>
<extraarg>-autoNameResolution</extraarg>
<extraarg>-p</extraarg>
<extraarg><conflicting_namespace>=<package_where_the_namepsace_should_get_created></extraarg>
<extraarg>-p</extraarg>
<extraarg><conflicting_namespace>=<package_where_the_namepsace_should_get_created></extraarg>
</extraargs>
<packagenames>
<packagename><path_to_package></packagename>
</packagenames>
</wsdlOption>