【问题标题】:RUN code after sending SOAP response in java在 java 中发送 SOAP 响应后运行代码
【发布时间】:2015-05-21 11:59:16
【问题描述】:

我的网络服务从用户那里得到一个 SOAP 请求。在服务中完成所有工作后,我可以发回用户响应然后运行一些代码吗?

实际上我想记录我的服务的输出。如果我运行记录输出的代码并且如果该日志服务失败,则由于该错误,我无法发回任何响应。

有没有一种方法可以发送用户对我的服务的响应,然后再运行日志服务?

我尝试了 SOAP 处理程序的 close 方法,但它在我的服务返回响应之前运行。

【问题讨论】:

  • 如何制作 Web 服务:是 Spring 还是 JEE 或其他?
  • 你能显示一些代码吗? AOP、拦截器、动态代理有多种方法可以做到这一点……很多框架都为此提供了解决方案,因为它远非罕见的需求。
  • 我可以使用 SOAP Handler 的 handleResponse() 吗?
  • Web 服务是使用@WebService 的J2EE Web 服务。对不起,我在这方面有点天真。
  • 代码很大。主要思想是这样的。获取 SOAP 请求,做某事,记录我的 Web 服务的任何错误。返回响应(服务结束后自动返回)。我只想在用户收到我的 SOAP 响应(服务结束)后进行日志记录。我在 ORACLE 拦截器上读到“当处理程序链中第一个处理程序的 handleResponse() 方法执行时,WebLogic 服务器将最终的 SOAP 消息响应返回给调用 Web 服务的客户端应用程序。”

标签: java soap web service


【解决方案1】:

基本上,您需要找到一个回调 (http://cleancodedevelopment-qualityseal.blogspot.co.uk/2012/10/understanding-callbacks-with-java.html),您可以在从服务器接受返回的 http 响应后挂钩。

请参阅此处了解类似问题:SOAP web service callback architecture? 已得到解答。

【讨论】:

    【解决方案2】:

    您应该使用回调函数来确保响应完成

    【讨论】:

      【解决方案3】:

      使用 try-catch 来控制代码中的错误。对于您的情况,您可以控制日志记录服务是否失败并将响应发送给用户。

      Exceptions try

      如果您想使用更复杂的东西,您可以使用使用队列或事件的异步方法。

      【讨论】:

        【解决方案4】:

        在 JEE 中,您可以为需要记录的方法使用“@Asynchronous”注解。它会异步运行,所以不会阻塞webservice的返回。

        如果您需要该方法的结果,则需要设法存储 Future 的引用,例如在单例中,然后在第二个 Web 服务调用中获取结果。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-23
          • 2011-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多