У меня есть веб-служба SOAP и URL-адрес WSDL. Мне нужно создать клиента. Я использовал для этого wsimport
. Я получил set of stubs
, WebServiceClient
и WebService
:
@WebServiceClient(name = "TestWSService", targetNamespace = "", wsdlLocation = "")
public class TestWSService extends Service {
...
@WebEndpoint(name = "TestWSPort")
public TestWS getTestWSPort() {
...
}
...
}
и
@WebService(name = "TestWS", targetNamespace = "")
@XmlSeeAlso({ObjectFactory.class})
public interface TestWS {
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "", targetNamespace = "", className = "")
@ResponseWrapper(localName = "", targetNamespace = "", className = "")
@Action(input = "", output = "")
public TestResponse testMethod(
@WebParam(name = "data", targetNamespace = "")
String date);
...
}
На этом этапе я уже могу позвонить в веб-службу:
URL url = new URL("");
TestWSService testWSService = new TestWSService(url);
TestWS testWS = testWSService.getTestWSPort();
testWS.testMethod(...);
Но я не хочу использовать сгенерированные классы в своем коде. Я хочу инкапсулировать его в свою оболочку. например:
public class TestWsAdapter implements TestWsClient {
private final TestWs testWs;
public TestWsAdapter(TestWs testWs) {
this.testWs = testWs;
}
@Override
public String testMethod(SomeRequest request) {
...
testWS.testMethod(...);
...
}
}
Мой TestWsAdapter
синглтон. Вопрос:
Должен ли TestWs
быть одиночным? Или мне нужно создать его в TestWsAdapter
? Или TestWSService
должно быть одноэлементным?