从JavaSOAP处理程序获取响应

从JavaSOAP处理程序获取响应,java,jax-ws,soaphandler,Java,Jax Ws,Soaphandler,如果有人能分享他解决以下问题的经验,我将不胜感激。 我在JDK实现中有一个SOAP服务(我相信是Metro) 出于日志记录的目的,我们需要提取传入请求和生成响应的主体。 我试图通过在服务器端实现SOAPHandler来获取它。 我将处理程序配置为Springbean。 我发现的所有示例基本上都复制了Oracle文档中的示例: 这里读取SOAP消息上下文的一个布尔属性,在我看来,它对应于请求或响应 但在我的实验中,调试器从未进入响应对应的分支(else分支)。这样的处理程序应该如何跟踪请求和响应

如果有人能分享他解决以下问题的经验,我将不胜感激。 我在JDK实现中有一个SOAP服务(我相信是Metro)

出于日志记录的目的,我们需要提取传入请求和生成响应的主体。 我试图通过在服务器端实现SOAPHandler来获取它。 我将处理程序配置为Springbean。 我发现的所有示例基本上都复制了Oracle文档中的示例:

这里读取SOAP消息上下文的一个布尔属性,在我看来,它对应于请求或响应

但在我的实验中,调试器从未进入响应对应的分支(else分支)。这样的处理程序应该如何跟踪请求和响应

我还想知道什么消息被读取为messageContext.getMessage():是传入(请求)还是出站(响应)

我现在想知道,通过实现handleMessage()方法来访问请求和响应是否确实可行? 单个处理程序是否同时拦截请求及其响应? 我是否误解了这个例子

而且。。。SOAPHandler-它是每个请求(请求-响应对)的特定实例吗?
谢谢

请为SoapHandler尝试以下内容:

Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
 if (isRequest) {
//handle request
 } else {
//handle response
         }
对于LogicalHandler:

 Boolean outboundProperty = (Boolean)
         messageContext.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY);
     if (outboundProperty.booleanValue()) {
            System.out.println("\nOutbound message:");
     } else {
            System.out.println("\nInbound message:");
     }

是的,单个方法同时拦截请求和响应。
 Boolean outboundProperty = (Boolean)
         messageContext.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY);
     if (outboundProperty.booleanValue()) {
            System.out.println("\nOutbound message:");
     } else {
            System.out.println("\nInbound message:");
     }