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