Java wsimport两个WCF服务覆盖objectFactory-如何解决

Java wsimport两个WCF服务覆盖objectFactory-如何解决,java,xml,web-services,jaxb,Java,Xml,Web Services,Jaxb,对不起,这太长了。我是JavaWeb服务新手,一直在浏览web上的示例,以创建一个Java客户机,将其连接到一对由供应商应用程序托管的WCF服务。我可以分别为每个服务创建客户端,但是当我尝试将它们放在一起时,第二个服务绑定会覆盖第一个服务绑定。我敢肯定是ObjectFactory类被覆盖了 我正在使用Metro(未安装在eclipse中)和以下ant内置exclipse build.xml: <project default="wsimport"> <target name

对不起,这太长了。我是JavaWeb服务新手,一直在浏览web上的示例,以创建一个Java客户机,将其连接到一对由供应商应用程序托管的WCF服务。我可以分别为每个服务创建客户端,但是当我尝试将它们放在一起时,第二个服务绑定会覆盖第一个服务绑定。我敢肯定是ObjectFactory类被覆盖了

我正在使用Metro(未安装在eclipse中)和以下ant内置exclipse

build.xml:

<project default="wsimport">
  <target name="wsimport">
    <exec executable="C:/Metro/bin/wsimport.bat"> 
        <arg line="-keep -s ../src -d ../bin -extension -Xnocompile -XadditionalHeaders -b ../build/wcf.jaxb -B-XautoNameResolution http://my.host.name/ptsqamt/Maintain/services/reports/2010/09/ReportServices.svc?singleWSDL"/>
    </exec>

    <exec executable="C:/Metro/bin/wsimport.bat"> 
        <arg line="-keep -s ../src -d ../bin -extension -Xnocompile -XadditionalHeaders -b ../build/wcf.jaxb -B-XautoNameResolution http://my.host.name/ptsqamt/Maintain/services/reports/2010/09/ReportFileService.svc?singleWSDL"/>
    </exec>
  </target>
</project>

}ReportServices不是有效的服务。有效的
服务是:{}ReportFileService

我曾尝试将构建放在单独的包中,这是可行的,但在运行时我遇到了类似的问题

我研究了各种线程,将目标名称空间从更改为其他名称,或将ObjectFactory类名更改为自定义名称

我有这个内联代码(找到了),但我不知道如何使用它/将其更改为外部文件

<xsd:complexType name="ObjectFactory">
  <xsd:annotation>
  <xsd:appinfo>
     <jxb:class name="ReportServicesObjectFactory" />
  </xsd:appinfo>
  </xsd:annotation>
</xsd:complexType>

谁能帮我解决这个问题。

好吧,我是个白痴

将这些服务放在它们自己的包中最终解决了这个问题,但是我在创建掩盖这个问题的服务时又犯了一个编码错误

因为我将这些服务从一个环境移动到另一个环境(测试、阶段、生产),所以我使用外部定义的地址(对应于实际的测试、阶段和生产应用程序服务器地址)创建服务我剪切/粘贴了指向错误服务的URL,这就是下面的错误试图告诉我的

线程“main”javax.xml.ws.WebServiceException中的异常: {}ReportServices不是有效的服务。有效的 服务是:{}ReportFileService URL reportServicesAddress=null; URL reportFileServiceAddress=null

获取互操作性信息对于这一点来说是多么糟糕,所以我将介绍一个小技巧,帮助解决我的问题

wsimport在处理WSDL时会引发异常。只有当我将包参数添加到wsimport时,才会发生这种情况

wsimport-p org.package.my myWSDL.xml

我偶然发现一个博客说,当调用WCF服务时,建议将以下属性设置为false。您可以在我的wsimport-bwcf.jaxb中看到它

wcf.jaxb

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1">
  <globalBindings generateElementProperty="false"/>
</bindings>

这解决了这个问题,并在生成代码时停止了冲突

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1">
  <globalBindings generateElementProperty="false"/>
</bindings>