首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cxf-codegen-plugin和“两个声明导致ObjectFactory类中的冲突”。

cxf-codegen-plugin和“两个声明导致ObjectFactory类中的冲突”。
EN

Stack Overflow用户
提问于 2015-10-08 22:40:24
回答 1查看 1K关注 0票数 2

我们正在尝试从生成一个Java SOAP客户端,以便与外部服务集成。由于这是一家外部公司,因此不能更改WSDL。

当尝试使用cxf-codegen-plugin Maven插件生成客户端时,我们得到以下错误:

代码语言:javascript
复制
Two declarations cause a collision in the ObjectFactory class.

该问题与WSDL中的以下声明有关:

代码语言:javascript
复制
<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>

很明显,问题出在哪里。我的问题是,WSDL似乎可以被在线通用SOAP客户端很好地导入,所以它至少必须是有效的。我还读到,在不使用-p选项的情况下生成Java代码将导致生成器创建单独的包,这应该可以解决问题。但是,如何使用cxf-codegen-plugin Maven插件做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2019-09-25 03:45:57

不确定你是否找到了解决方案,但可能会对其他人有所帮助。我已经尝试了下面的方法,它对我很有效。我使用cxf-codegen-plugin Maven插件,得到上面的错误。所以首先我在我的pom.xml中使用了-autoNameResolution。这解决了几个重复项,但仍然有很少的重复项。因此,在我的pom.xml中,我使用了"-p“参数来将冲突的名称空间放在不同的目录中,并且它起作用了。

示例(来自我的pom.xml的片段):

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33018941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档