wsimport生成具有固定URL地址的代码

时间:2012-11-10 10:18:03

标签: java web-services wsimport

我正在为现有的SOAP Web服务编写客户端。我已经使用wsimport实用程序针对我的Tomcat中运行的服务实例的WSDL文件生成了存根。

问题是,wsimport在生成的代码中使用固定的URL地址,因此应用程序仅在针对一个特定服务器运行时才有效(例如,在我的测试环境中)。

我需要能够使用服务的实际部署的URL地址来参数化存根。


根据this thread,它应该有助于使用双参数构造函数而不是默认构造函数,并传递WSDL文件的实际URL地址和默认构造函数中使用的相同限定名。

但这对我不起作用。它抛出以下异常:

Exception in thread "main" java.lang.Error: Undefined operation name GetMetadataLanguages
    at com.sun.xml.ws.model.JavaMethodImpl.freeze(JavaMethodImpl.java:327)
    at com.sun.xml.ws.model.AbstractSEIModelImpl.freeze(AbstractSEIModelImpl.java:97)
    at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:268)
    at com.sun.xml.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:633)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:328)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:311)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:304)
    at javax.xml.ws.Service.getPort(Unknown Source)
    at com.opentext.livelink.service.docman.DocumentManagement_Service.getBasicHttpBindingDocumentManagement(DocumentManagement_Service.java:66)
    at cz.csinsertdt.util.cs.CSAuthenticationHandler.getDocManagementService(CSAuthenticationHandler.java:91)
    at cz.csinsertdt.TestScenario02.getDocManagementService(TestScenario02.java:264)
    at cz.csinsertdt.TestScenario02.run(TestScenario02.java:73)
    at cz.csinsertdt.TestScenario02.main(TestScenario02.java:57)

我做错了什么?


抛出异常的代码部分如下所示:

DocumentManagement_Service service = new DocumentManagement_Service(
    new URL(location.toString() + "/DocumentManagement?wsdl"),
    new QName("urn:DocMan.service.livelink.opentext.com", "DocumentManagement")
);

DocumentManagement endpoint = service.getBasicHttpBindingDocumentManagement();
setSoapHeader((WSBindingProvider) endpoint, otAuth);

return endpoint;

otAuth是从其他服务获得的自动化令牌。

0 个答案:

没有答案