wsimport генерирует код с фиксированными URL-адресами

Я пишу клиента для существующей веб-службы SOAP. Я сгенерировал заглушки с помощью утилиты wsimport для файла WSDL экземпляра службы, работающей в моем Tomcat.

Проблема в том, что wsimport использует фиксированные URL-адреса внутри сгенерированного кода, и поэтому приложение работает только при работе с одним конкретным сервером (например, в моей тестовой среде).

Мне нужно было бы иметь возможность параметризовать заглушки с помощью URL-адреса фактического развертывания службы.


Согласно этой теме, это должно помочь для использования конструктора с двумя аргументами вместо конструктора по умолчанию и передачи фактического URL-адреса файла WSDL и того же полного имени, которое используется в конструкторе по умолчанию.

Но у меня это не работает. Это вызывает следующее исключение:

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 - это токен авторизации, полученный из другой службы.


person Dušan Rychnovský    schedule 10.11.2012    source источник
comment
Пожалуйста, покажите свой клиентский код (часть, вызывающая услугу).   -  person home    schedule 10.11.2012
comment
Готово - надеюсь, я правильно понял, какую часть кода вы имели в виду.   -  person Dušan Rychnovský    schedule 10.11.2012
comment
Спасибо, это не относится к рассматриваемой операции GetMetadataLanguages вместо DocumentManagement.   -  person home    schedule 10.11.2012