SOAP сервис, который отправляет данные нескольким сервисам в соответствии с одним и тем же WSDL - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть SOAP сервис и много клиентов. SOAP служба собирается отправлять некоторые данные клиентам в соответствии с WSDL.

Я использую Apache CXF для генерации кода

Плагин Maven;

<plugin>
 <groupId>org.apache.cxf</groupId>
 <artifactId>cxf-codegen-plugin</artifactId>
</plugin>

У меня есть TestService интерфейс и метод sendSample ;

@WebService(targetNamespace = "http://",
            name = "TestService")
@XmlSeeAlso({ObjectFactory.class})
public interface TestService {

    @WebMethod
    @RequestWrapper(localName = "sendSample",
                    targetNamespace = "http://",
                    className = "SendSample")
    @ResponseWrapper(localName = "sendSampleResponse",
                     targetNamespace = "http://",
                     className = "SendSampleResponse")
    @WebResult(name = "return", targetNamespace = "")
    public SampleReturn sendSample(
        @WebParam(name = "sample", targetNamespace = "")
        java.util.List<Sample> samples
    );

}

Клиентская реализация;

@WebServiceClient(name = "TestService", 
                  wsdlLocation = "classpath:TestService.wsdl",
                  targetNamespace = "http://") 
public class TestService_Service extends Service {

    @WebEndpoint(name = "TestServicePort")
    public TestService getTestServicePort() {
        return super.getPort(TestServicePort, TestService.class);
    }
}

На данный момент у меня есть реализация для одного клиента, как это;

TestService_Service service = new TestService_Service(TestService_Service.WSDL_LOCATION, TestService_Service.SERVICE);
implPort = service.getTestServicePort();
SampleReturn returned = implPort.sendSample(samples);

Я должен отправить данные между моей SOAP службой нескольким клиентам, и клиенты имеют одинаковый WSDL.

В WSDL, только разница IP адрес;

<wsdl:service name="TestService">
        <wsdl:port binding="tns:TestServiceSoapBinding" name="TestServicePort">
            <soap12:address location="http://IP:8080/webservices/TestService?wsdl"></soap12:address>
        </wsdl:port>
</wsdl:service>
  1. Как я могу реализовать для нескольких клиентов в этой ситуации?
  2. Какой шаблон проектирования я должен использовать?

Спасибо за Теперь.

...