Я пытаюсь сделать сервисный вызов конечной точке.Когда я вызываю сервис во второй раз, в строке 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);