使用JAXRPC-RI Web服务客户端时如何设置连接超时?

mat*_*t b 8 java soap web-services jax-rpc java-ee

我正在使用一些遗留组件,我们使用一些使用JAXRPC-RI(参考实现)库构建的客户端代码与SOAP Web服务(我绝对,非常厌恶的技术)进行交互.

我有兴趣能够使用存根设置超时,以便万一Web服务器在X秒内没有回复,应用程序不会在那里永远等待响应.

我正在使用Apache Axis生成的客户端/存根,您只需使用它org.apache.axis.client.Stub.setTimeout()来设置超时.

对于我的生活,我无法弄清楚在使用JAXRPC-RI创建的存根时如何设置超时:

  • 我实例化的端口类扩展com.sun.xml.rpc.client.StubBase和实现javax.xml.rpc.Stubcom.sun.xml.rpc.spi.runtime.StubBase.
  • 这些类中的JavaDocs都没有提到任何类型的超时或方法来执行此操作.
  • 尝试代码stub._setProperty("axis.connection.timeout", 1000);会在运行时导致异常:javax.xml.rpc.JAXRPCException: Stub does not recognize property: axis.connection.timeout

有没有人对使用JAXRPC-RI客户端时如何设置/强制执行超时有任何想法?它甚至可能吗?

Pet*_*háč 0

我只是想尝试获得赏金,所以如果我完全走错了路,请不要开枪打我:)如果您的应用程序“永远设置在那里等待响应”,那么您可以单独执行请求线程,在生成你的线程之后,requestThread你可以说requestThread.join(max_time_to_wait);下一个调用将检查 requestThread 是否仍然存在,如果是,则尝试杀死它。

您的应用程序将在超时后继续运行,这不是最不优雅的解决方案......