У меня есть куча сгенерированных заглушек SOAP-клиентов, которые отличаются версиями WSDL. Это происходит потому, что серверы SOAP имеют разную версию своих веб-сервисов.Управление несколькими версиями SOAP-заглушек
Штыри для веб-службы версии 1 упакованы в soap.stubs.version1 и заглушки для версии 2 под soap.stubs.version2.
Это означает, что MyStub в версии 1 WSDL может отличаться от MyStub в версии 2. Как таковой, если я вызову метод SOAP, который возвращает версию 2 MyStub и удерживает значение в версии 1 MyStub, он «сломает» », так как XML-ответ не может быть правильно отображен на атрибуты заглушки.
Из-за этого мне нужно связать типы классов с SOAP-серверами.
Репликация логики для каждой версии будет просто невозможно:
if(SoapServer.version==1)
{
soap.subts.version1.MyStub result = SoapServer.getFoo();
/* rest of the logic using result of type soap.subts.version1.MyStub */
}
else if(SoapServer.version==2)
{
soap.subts.version2.MyStub result = SoapServer.getFoo();
/* rest of the logic using result of type soap.subts.version2.MyStub */
}
Каждый раз, когда я генерировать заглушек для новой версии мне нужно будет повторить всю логику, чтобы использовать новые корешки. Иногда единственным изменением является атрибут.
Как я могу использовать соответствующие заглушки в зависимости от сервера SOAP без необходимости повторной реализации всей логики для этого «класса»?
Я думал об использовании Object, но для этого требовалось бы выделить if instanceof и casts.