【问题标题】:In Java, throwing an exception when a network connection is lost during a WebService Call (similiar to WCF CommunicationException)在 Java 中,在 WebService 调用期间网络连接丢失时抛出异常(类似于 WCF CommunicationException)
【发布时间】:2009-10-20 10:00:03
【问题描述】:

我正在处理 Java 中自动生成的 WebService 存根(使用 JAX-WS RI 生成)。

我的实际服务是一个使用 WCF basicHttpBinding 公开其 web 服务的 .Net 程序。

在实际的 WebService 调用期间,我应该如何处理通信问题。 (即,如果遇到通信/网络问题,您将在客户端的 WCF 中使用 catch CommunicationException 包装您的调用)。

似乎没有处理此问题的检查异常。

(当我通过 Web 服务方法查看自动生成的存根接口时,除了 WSDL 公开的预定义 FaultExceptions/Messages 之外,不会抛出异常。

此外,当我实际测试网络断开连接时 WebService 调用期间会发生什么时,客户端只是挂在调用上,而不是抛出某种运行时异常。

想法?

谢谢

【问题讨论】:

  • 看来您的问题完全与 Java 客户端/存根有关,与 WCF 服务完全无关。对吗?
  • 您可以使用 WS-ReliableMessaging 来处理此类问题
  • 是的,看起来就是这样。我认为存根必须以不同的方式生成,以公开某种已检查的通信错误异常(如 javax.xml.soap.SOAPException)。
  • 为了响应 kd304,我正在考虑使用支持可靠消息传递的 WsHttpBinding(在服务器端)。我不太精通可靠消息传递的概念,但是如果打开它并且更新了 Web 参考,Java 客户端是否会简单地挂在服务调用上,直到重新建立连接?谢谢!

标签: java wcf web-services


【解决方案1】:

您为什么认为必须将通信错误(例如由于网络故障)作为已检查异常来处理是有用的? Web 服务的调用者如何有效地处理这种可能性?

对我来说,允许未经检查的异常向上传播直到可以合理处理的程度似乎更好。

【讨论】:

  • 它也可能是运行时异常,但是在我的情况下,似乎没有抛出异常并且服务调用只是挂起。在相应的 .Net WCG 客户端应用程序中,我可以捕获 CommunicationExceptions 和 TimeOutExceptions 并进行相应处理。
猜你喜欢
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 2015-07-29
  • 1970-01-01
  • 2012-09-14
  • 2012-01-24
相关资源
最近更新 更多