Apache Служба CXF: как настроить цепочку обработчиков без аннотации @HandlerChain? - PullRequest
0 голосов
/ 05 мая 2020

Я пробовал следующий код:

Класс резолвера:

public class WorkdayHandlerResolver implements HandlerResolver {

    private List<Handler> handlerChain = new ArrayList<Handler>();

    public WorkdayHandlerResolver(){
         this.handlerChain.add( new WorkdayHandler() );
    }

    @Override
    public List<Handler> getHandlerChain(PortInfo portInfo) {
      return this.handlerChain;
    }
}

Класс обработчика:

public class WorkdayHandler implements SOAPHandler<SOAPMessageContext>{
    private static final Logger LOGGER = LoggerFactory.getLogger(WorkdayHandler.class.getName());


    @Override
    public boolean handleMessage(SOAPMessageContext context) {

Основной класс обслуживания:

HumanResourcesService humanResourcesService = new HumanResourcesService();
HumanResourcesPort humanPort = humanResourcesService.getHumanResources();
humanResourcesService.setHandlerResolver(new WorkdayHandlerResolver());

Когда выполняется то же самое на сервере. Он не показывает никаких запросов или ответов.

Может ли кто-нибудь помочь мне, как настроить цепочку обработчиков без аннотации @Handlerchain, поскольку нереализуемый пример или пример sureshot, который я получаю в Google?

1 Ответ

0 голосов
/ 05 мая 2020

Я удалил

humanResourcesService.setHandlerResolver(new WorkdayHandlerResolver());

и поместил следующую строку

((BindingProvider)humanPort).getBinding().setHandlerChain(Collections.singletonList(new WorkdayHandler()));

, и это было исправлено

...