我正在处理一个遗留组件,其中我们使用使用JAXRPC-RI(reference implementation)库构建的客户端代码与SOAP web服务(一种我非常厌恶的技术)进行交互。
我希望能够设置存根(stubs)的超时时间,以便在web服务服务器在X秒内没有回复时,应用程序不会永远等待响应。
我通常使用Apache Axis生成的客户端/存根,其中您可以简单地使用org.apache.axis.client.Stub.setTimeout()
来设置超时时间。
但是,我无论如何都无法弄清楚在使用JAXRPC-RI创建的存根中如何设置超时时间:
- 我实例化的端口类扩展了
com.sun.xml.rpc.client.StubBase
并实现了javax.xml.rpc.Stub
和com.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客户端时设置/强制执行超时的想法?这是否可能?