【问题标题】:Getting Request parameters from Spring WS Interceptor从 Spring WS 拦截器获取请求参数
【发布时间】:2013-09-06 14:40:39
【问题描述】:

我正在使用带有 Spring WS 的 Jaxb 2,并且我有一个拦截器,它被定向到特定的有效负载并且它工作正常。

这里我的要求是从我的拦截器的handleRequest方法中读取请求参数。我知道这应该是相当直截了当的。但是无法找到读取请求参数的方法。目前我的 handleRequest 方法如下所示。

@Override
public boolean handleRequest(MessageContext messageContext, Object endpoint)
    throws Exception {

    boolean proceed = true;

    SaajSoapMessage saajSoapMessage = 
                    (SaajSoapMessage) messageContext.getRequest();

    SOAPMessage soapMessage = saajSoapMessage.getSaajMessage();

    Document doc = saajSoapMessage.getDocument();

    Element element = doc.getElementById("request");
}

my Endpoint 类的相关部分是

@PayloadRoot(namespace = NAMESPACE, localPart = "confirOrderRequest")
public @ResponsePayload ConfirmOrderResponse handleConfirmOrder(
    @RequestPayload ConfirmOrderRequest confirmOrderRequest) {

     ...........
}

这里我的要求是在拦截器handleRequest方法中获取ConfirmOrderRequest附带的orderId,有没有办法直接做到这一点,还是我需要为此做一些XML解析?

【问题讨论】:

标签: java web-services jaxb spring-ws


【解决方案1】:

@VitualTroll,它对我有所帮助,谢谢!

但是对这个问题的回答是不正确的(至少在我的情况下)。我的新 handleRequest() 方法的主体如下所示。希望这将为将来的其他人节省一些时间。这里 jaxb2Marshaller 是我的 spring bean。

  @Autowired
  private Jaxb2Marshaller jaxb2Marshaller;

  @Override
  public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception {

    boolean proceed = true;

    SaajSoapMessage saajSoapMessage = (SaajSoapMessage) messageContext.getRequest();


    SoapBody requestBody = saajSoapMessage.getSoapBody();
    Object obj = jaxb2Marshaller.unmarshal(requestBody.getPayloadSource());


    if (obj instanceof ConfirmOrderRequest ) {
      ConfirmOrderRequest cor = (ConfirmOrderRequest ) obj;

      String orderId = cor.getOrderId();

      ...........
      .......
    }
  .....
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多