Получение "HttpServletRequest" в soapMessageContext - обработчик Axis - PullRequest
5 голосов
/ 05 октября 2011

Я пытаюсь получить «HttpServletRequest» в методе AxisHandler «handleMessage». Мой AxisHandler реализует «SOAPHandler», как показано ниже кода ..

Мне нужно получить «HttpServletRequest» в «InBoundDirection», но он возвращает «ноль».

Как я могу получить "HttpServletRequest" в "InBoundDirection" SOAPHandler?

Спасибо ..

@Override
public boolean handleMessage(SOAPMessageContext soapMessageContext) {
    boolean direction = ((Boolean) soapMessageContext.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();        
    if (direction) {
        System.out.println("direction = outbound");
    } else {
        System.out.println("direction = inbound");
        HttpServletRequest servletReq=(HttpServletRequest) soapMessageContext.get(MessageContext.SERVLET_REQUEST);
        // BECAUSE servletReq is null the following line returns a "nullPointerException"
        System.out.println(servletReq.getRemoteHost()); 
    }
    return true;
}

1 Ответ

0 голосов
/ 22 июля 2016

См. Этот пост jax с получением ip клиента для очень хорошего объяснения. Похоже, что если кто-то хочет иметь универсальный обработчик (в моем случае для извлечения сертификата клиента), ему необходимо реализовать одинаковую логику как для веб-сервисов, размещенных в контейнере EE, так и для контейнеров, размещенных в SE.

...