【问题标题】:How to send additional fields to soap handler along with soapMessage?如何将附加字段与soapMessage一起发送到soap处理程序?
【发布时间】:2012-02-22 23:28:02
【问题描述】:

我正在使用 SoapHandler 为 Web 服务客户端记录 RequestXML,如下所示

public boolean handleMessage(SOAPMessageContext smc) {
    logToSystemOut(smc);
    return true;
}


private void logToSystemOut(SOAPMessageContext smc) {
     Boolean outboundProperty = (Boolean)
     smc.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY);

    if (outboundProperty.booleanValue()) {
        out.println("\nOutbound message:");
    } else {
        out.println("\nInbound message:");
    }

    SOAPMessage message = smc.getMessage();
    try {
        message.writeTo(out);
        out.println("");   
        } catch (Exception e) {
        out.println("Exception in handler: " + e);
    }
} 

获得了将此 xml 以及一些额外值(xml 中不存在)添加到 DB 的新要求。有什么办法可以将一些额外的字段传递给上面的肥皂处理程序(在 handleMessage 方法中)?

请注意,更改 xml/WSDL 或将其添加到 SOAP 消息标头对我来说不是一个选项,因为它归其他接口所有。还有其他解决方案吗?

谢谢!

【问题讨论】:

    标签: web-services soap jax-ws


    【解决方案1】:

    您可以将您的服务类转换为“BindingProvider”类型的类。在这种形式中,您可以使用它来分配对象,稍后您可以从 SOAPHandler 访问这些对象。另一个有用的用法是您也可以通过这种方式更改端点 URL。

    在调用服务之前:

        MySoapServicePortType service = new MySoapService().getMySoapServicePort();
        BindingProvider bp = (BindingProvider)service;
        MyTransferObject t = new MyTransferObject();
        bp.getRequestContext().put("myTransferObject", t);
        TypeResponse response = service.doRequest();
        SOAPMessage message = t.getRequestMessage(message);
    

    从你的日志功能你做:

    private void logToSystemOut(SOAPMessageContext smc) {
        ...
        MyTransferObject t = (MyTransferObject) messageContext.get("myTransferObject");
        if (outboundProperty.booleanValue())
            t.setRequestMessage(message);
        else
            t.setResponseMessage(message);
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多