У меня есть 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>
- Как я могу реализовать для нескольких клиентов в этой ситуации?
- Какой шаблон проектирования я должен использовать?
Спасибо за Теперь.