【发布时间】: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