Web services 在JAX-WS(weblogic)上设置超时
我有一个调用另一个WS的JAX-WS(客户机是使用JAX-WS构建的)。我的目标是设置调用的超时。 我知道我可以使用: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
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的话,有多少参考实现会与他们的“最佳实践”相冲突?你确实有道理。我想知道甲骨文公司提出了什么建议。。。