Проблема кода клиента Webservice с разными конечными точками - PullRequest
1 голос
/ 31 марта 2020

Я работаю над различными env DEV, TEST, STAGE и пытаюсь использовать размещенный веб-сервис (DEV, TEST AND PROD). После создания клиентской заглушки и последующего тестирования в системе DEV я пытаюсь переместить его в другую среду, например TEST. Я хотел избежать создания STUB для каждой среды и могу изменить конечную точку в клиенте перед вызовом:

BindingProvider prov = (BindingProvider) port;
        prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "test");
        prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "test");
        prov.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY , $ENDPOINTURL);

При переопределении конечной точки перед ее вызовом возникает исключение: javax. xml .ws. soap .SOAPFaultException: часть сообщения {$ ENDPOINT} PartNumRequest не была распознана. (Существует ли он в службе WSDL?)

Мне нужна помощь по клиентскому коду веб-сервиса, чтобы не требовалось генерировать заглушку для каждой среды, когда структура WSDL одинакова:

Клиент используемый код:

    //PartNum_Service service = new PartNum_Service(wsdl,qname);
    PartNum_Service service = new PartNum_Service();
    System.out.println("**********"+service.getServiceName())
    PartNum  port = service.getPartNumSOAP();
    BindingProvider prov = (BindingProvider) port;
    prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "TEST");
    prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "TEST");
    prov.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY , $ENDPOINT);

    PartNumInData input = new PartNumInData();
    input.setAction("Create");
    input.setPart("121212");
    System.out.println("BEFORE call::");
    PartNumOutData OUT= port.partNum(input);
...