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

标签 java web-services jakarta-ee soap jax-rpc

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

我对能够使用 stub 设置超时感兴趣,这样万一 Web 服务服务器在 X 秒内没有回复,应用程序就不会永远设置在那里等待响应。

我习惯于使用 Apache Axis 生成的客户端/ stub ,您可以在其中简单地使用 org.apache.axis.client.Stub.setTimeout() 设置超时。

在我的一生中,我无法弄清楚如何在使用通过 JAXRPC-RI 创建的 stub 时设置超时:

  • 我正在实例化的端口类扩展 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属性:axis.connection.timeout

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

最佳答案

您可能幸运地设置了诸如 sun.net.client.defaultConnectTimeoutsun.net.client.defaultReadTimeout 之类的属性,尽管这会引入系统范围的超时。

在代码中,属性值是使用字符串设置的:

System.setProperty("sun.net.client.defaultConnectTimeout", "1000");
System.setProperty("sun.net.client.defaultReadTimeout", "1000");

为了快速测试,设置环境变量 JAVA_OPTS 或使用命令行可能更容易:

java -Dsun.net.client.defaultConnectTimeout="1000" ...

关于java - 使用 JAXRPC-RI Web 服务客户端时如何设置连接超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/808487/

相关文章:

java - Play Framework 2 - 如何在不调用 .get() 的情况下等待多个 WS 响应?

java - Hornetq 大消息填满磁盘空间

java - J2ME - 无法关闭客户端的输出流,服务器挂起等待数据 [nokia J2ME 实现]

java - 生成具有六个前导零的 MD5 哈希

java - 带有安全 header 的 SOAP Web 服务

php - 我将如何防止在 MySQL 数据库上运行查询并以 JSON 格式输出的 PHP Web 服务脚本的热链接?

java - 如何通过java/spring代码解析字符串URL中的URI参数?

java - 在 JavaFX UI 中显示 littleproxy 日志

java - dataTable sortBy 函数不起作用(primefaces)

jsf - NetBeans - Web 应用程序 - 网页子文件夹