【问题标题】:Set timeout on JAX-WS (weblogic)在 JAX-WS (weblogic) 上设置超时
【发布时间】:2013-06-20 12:32:24
【问题描述】:

我有一个调用另一个 WS 的 JAX-WS(客户端已使用 JAX-WS 构建)。我的目标是设置调用超时。 我知道我可以使用:

BindingProviderProperties.CONNECT_TIMEOUT
BindingProviderProperties.REQUEST_TIMEOUT

public static final java.lang.String CONNECT_TIMEOUT =  "com.sun.xml.internal.ws.connect.timeout";
public static final java.lang.String REQUEST_TIMEOUT = "com.sun.xml.internal.ws.request.timeout";

但是这些指向 com.sun.xml.* 类,根据 Oracle 的说法,这被认为是一种非常糟糕的做法,因为这些类没有记录在案,并且可能会更改或被删除。 来源:www.oracle.com/technetwork/java/faq-sun-packages-142232.html

谁能指出我如何在不违反 Oracle 准则的情况下设置调用超时?

【问题讨论】:

  • 也许 Oracle 应该根据规范为我们提供一个标准化的机制来配置它,而不仅仅是发出警告。最好的办法是直接在 ws 客户端可用的 java.net.URLConnection 实例上设置超时。
  • @kolossus 你能给我提供更多关于这方面的信息吗?如果可能的话,举个例子?
  • 我指的是底层的URLConnection 对象,服务客户端存根最终将使用它来启动到Web 服务的HTTP 连接。但经过广泛的研究,看起来该物体在任何时候都没有暴露出来。它都隐藏在 API 中(很可能在 Stub 类中),您将无法访问它。除此之外,它也在com.sun.xxx 包中,所以即使你能拿到它,它也不能解决你原来的需求
  • Oracle 的建议无论如何都是多余的:大多数根据规范(JAX-WS、JSF 等)构建的 API 都使用 com.sun.XXX 包命名约定,以表明它们是社区支持的。如果我们要听 Oracle,有多少参考实现会违反他们的“最佳实践”?
  • 你说得有道理。我想知道 oracle 提出什么建议...

标签: web-services jax-ws weblogic


【解决方案1】:

你应该使用:

javax.xml.ws.client.connectionTimeout
javax.xml.ws.client.receiveTimeout

您可以在此处找到更多信息/示例:https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Development_Guide/Develop_a_JAX-WS_Client_Application.html

【讨论】:

    【解决方案2】:

    您可以尝试在本页末尾定义的 WS 客户端中设置超时属性:http://docs.oracle.com/cd/E13222_01/wls/docs92/webserv/client.html

    【讨论】:

    • 我相信这个说明是指 JAX-RPC 实现而不是 JAX-WS
    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2014-12-17
    • 2011-01-10
    相关资源
    最近更新 更多