Должен ли WebServiceClient или WebService, сгенерированный через wmiport, быть одноэлементным или создаваться каждый раз? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть веб-служба 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 должно быть одноэлементным?

...