Как извлечь информацию заголовка SOAP из класса JAX-WS? - PullRequest
1 голос
/ 31 января 2012

Я пишу JAX-WS WebService, но сталкиваюсь с небольшим камнем преткновения, когда дело касается извлечения информации из заголовка SOAP.Мой класс WebService помечен @WebService, и я внедряю WebServiceContext в класс с помощью:

@Resource
private WebServiceContext webServiceContext;

, но я немного застрял в этом вопросе о том, как извлечь информацию заголовка SOAP.

Я использую Spring 3, но там также не было никаких классов методов / утилит, которые бы пролили свет на проблему.Из того, что я видел в Интернете, я могу использовать getMessageContext() и привести к SOAPMessageContext, но я вижу, что значительное количество людей, терпящих неудачу на этом уровне, жалуются на проблемы приведения без предлагаемого решения.

У меня естьЯ еще не пробовал, поэтому прежде чем подумать, мне было интересно, был ли это предпочтительный метод или есть ли лучший метод для использования.

Спасибо,

Эрик

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Полагаю, вы можете получить SoapMessageContext с помощью обработчика сообщений. Вы можете проверить ответ здесь .

Реализация SoapMessageHandler, как это должно работать:

public class SoapHeadersHandler implements SOAPHandler<SOAPMessageContext>
{

  @Override
  public boolean handleMessage(SOAPMessageContext soapMessageContext)
  {
    try
    {
      Object[] headers = soapMessageContext.getHeaders(...);
    }
    catch (SOAPException e)
    {
      // Handle exception
    }

    return true;
  }

}
1 голос
/ 03 июля 2019

Размещение здесь того, что я сделал, так как не требует создания дополнительного класса

final HttpServletRequest req = (HttpServletRequest) wsCtxt.getMessageContext().get(MessageContext.SERVLET_REQUEST);
String headerValue = req.getHeader("myHeaderName");
...