Java Webservice объект использует ранее использованную цепочку обработчиков - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь сделать сервисный вызов конечной точке.Когда я вызываю сервис во второй раз, в строке ss.getDummyServiceHttpPort(); базовые классы сервисов добавляют ранее используемые handlerChains.Даже после добавления другого HandlerResolver (ss.setHandlerResolver(new JaxWsHandlerResolver(paramMap));) это никак не повлияет.

При втором вызове службы он по-прежнему использует цепочку обработчика первых трех параметров, хотя он должен был использовать цепочку обработчика второго параметра-4.

Что может быть причиной этого?

Это пользовательский HandlerResolver

public class JaxWsHandlerResolver implements HandlerResolver {

    private Map<String, Object> paramMap;

    public JaxWsHandlerResolver(Map<String, Object> paramMap) {
        this.paramMap = paramMap;
    }

    public JaxWsHandlerResolver() {
    }

    @SuppressWarnings("rawtypes")
    public List<Handler> getHandlerChain(PortInfo info) {
        List<Handler> hchain = new ArrayList<Handler>();
        hchain.add(new JaxWsLoggingHandler(this.paramMap, info.getPortName().getLocalPart()));
        return hchain;
    }

Это первый вызов.

DummyService ss = new DummyService(new URL(
        Service_URL), qName);

DummyServicePortType port = ss.getDummyServiceHttpPort();

    Map<String,Object> paramMap = new HashMap<String,Object>();
    paramMap.put("param1", param1);
    paramMap.put("param2", param2);
    paramMap.put("param3", param3);

    service.setHandlerResolver(new JaxWsHandlerResolver(paramMap));

    Result result = servicePort.methodFirst(param1, param2, param3);

Это второйзвонок.

DummyService ss = new DummyService(new URL(
        Service_URL), qName);

// On this line while getting the port the first handler chain is used
    DummyServicePortType port = ss.getDummyServiceHttpPort();

Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("param1", param1);
paramMap.put("param2", param2);
paramMap.put("param3", param3);
paramMap.put("param4", param4);

ss.setHandlerResolver(new JaxWsHandlerResolver(paramMap));

    Result result = servicePort.methodSecond(param1, param2, param3,param4);
...