Web services 在JAX-WS(weblogic)上设置超时

Web services 在JAX-WS(weblogic)上设置超时,web-services,jax-ws,weblogic,Web Services,Jax Ws,Weblogic,我有一个调用另一个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

我有一个调用另一个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,这被认为是一种非常糟糕的做法,因为这些类没有文档记录,可能会更改或删除。 资料来源:


有人能告诉我如何在不违反Oracles准则的情况下设置调用超时吗?

您可以尝试在WS-client中设置超时属性,这些属性在本页末尾定义:

您应该使用:

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

您可以在这里找到更多信息/示例:

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