当前位置: 首页 > 知识库问答 >
问题:

从java肥皂处理程序获取响应

姜建德
2023-03-14

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

出于日志记录的目的,我们需要提取传入请求和生成响应的正文。我试图通过在服务器端实现SOAPHandler来获取它。我将处理程序配置为Spring bean。我找到的所有示例基本上都复制了Oracle留档:https://docs.oracle.com/cd/E23943_01/web.1111/e13734/handlers.htm#WSADV170中的示例:

      public boolean handleMessage(SOAPMessageContext messageContext)
  {
     Boolean outboundProperty = (Boolean)
         messageContext.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY);

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

     System.out.println("** Response: "+messageContext.getMessage().toString());
    return true;
  }

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

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

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

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

和SOAPHandler-它是每个请求(请求-响应对)的特定实例吗?非常感谢。

共有1个答案

艾星河
2023-03-14

为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:");
     }
 类似资料:
  • 我在一个独立的java应用程序中使用apache cxf client 3.2.2来调用一些soap Web服务。 试图在单向操作中获取soap故障代码和故障字符串,但没有成功。 我定义了一个自定义拦截器,但它永远不会到达handleMessage 定制拦截器的代码 } 我遇到的异常是MessageSenderEndingInterceptor(处于PREPARE\u SEND阶段)。 它正在抛出

  • 第一特征给定ur“” def有效负载=read(") 请求有效载荷 肥皂行动" 值= /Envelope/Body/Response/Result/Num print value#按预期正确打印值 second.feature背景:*def fetch=read('first.feature')*def data=call fetch 情景: 打印数据。response#以json格式打印soap

  • 我在CentOS机器上启用标题中提到的模块时遇到了一些问题。 百胜安装php-mCrypt/php-soc/php-mysql工作正常,并提到它们已经安装,重新启动Apache后,似乎它们没有启用。 例如,我无法定位mcrypt.so,运行php--ini会给出: 这是在我放置extension=mcrypt之后。所以在php中。伊尼。

  • 问题内容: 尝试指定自定义的肥皂标题。不知道如何填充SoapEnvelope.headerOut属性。 到目前为止我的代码? 这是标题WSDL提取… 问题答案: headerOut是您需要构建的Element []。 像这样 然后将其添加到数组中。

  • 问题内容: 情况: 活动绑定到已启动的前台服务。 服务将本地活页夹分发给活动。 活动通过getService()调用获取对服务的引用。 活动希望使用消息 直接 与服务中运行的线程进行通信。它从活动中调用mService.getThreadHandler()方法。 问题: 如何从当前正在运行的线程中将Handler放入活动活动中,以便可以将消息直接发布到线程的messagequeue中? 我不需要在

  • 问题内容: 有什么方法可以使用soap-rpc Web服务,以便通过共享接口生成客户端?宁静的Web服务以这种方式进行操作,但是基于soap的情况又如何呢?您是否总是需要使用Axis或CXF之类的工具来生成存根和代理,还是有可以动态设置的东西? 谢谢。 编辑#1: 为了澄清,我正在寻找做这样的事情: 通用接口: 该公共接口已经可以用于创建服务器端组件。我的问题是: 客户端可以使用这种类型的通用接口