Java 如何设置JAX-WS客户端超时?
我正在JBoss5.1.0GA上开发Jax ws客户端。 我想设置web服务客户端超时 我尝试了StubExt.PROPERTY\u CLIENT\u TIMEOUTJava 如何设置JAX-WS客户端超时?,java,web-services,jakarta-ee,jboss,jax-ws,Java,Web Services,Jakarta Ee,Jboss,Jax Ws,我正在JBoss5.1.0GA上开发Jax ws客户端。 我想设置web服务客户端超时 我尝试了StubExt.PROPERTY\u CLIENT\u TIMEOUT int timeoutMillisecond=3000; bp.getRequestContext().put(StubExt.PROPERTY_CLIENT_TIMEOUT, timeoutMillisecond); 它可以工作,但只有在3*timeoutmillished之后(9000毫秒之后)才会引发异常,但3000ms会
int timeoutMillisecond=3000;
bp.getRequestContext().put(StubExt.PROPERTY_CLIENT_TIMEOUT, timeoutMillisecond);
它可以工作,但只有在3*timeoutmillished之后(9000毫秒之后)才会引发异常,但3000ms会写入日志文件
2012-12-24 15:42:40,053 DEBUG Sending request
2012-12-24 15:42:49,057 ERROR WebServiceException returned:
javax.xml.ws.WebServiceException: org.jboss.ws.core.WSTimeoutException: Timeout after: 3000ms
我也尝试过很多其他的方法
bp.getRequestContext().put("com.sun.xml.ws.connect.timeout", 100);
bp.getRequestContext().put("com.sun.xml.ws.request.timeout", 100);
// from com.sun.xml.ws.developer.JAXWSProperties
bp.getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 100);
bp.getRequestContext().put(JAXWSProperties.REQUEST_TIMEOUT, 100);
但是在JBoss5.1上什么都不起作用
您能告诉我如何正确设置客户端超时吗?您可以使用服务端口的设置
BindingProvider bindingProvider = (BindingProvider) YOUR_SERVICE_PORT;
Map<String, Object> context = bindingProvider.getRequestContext();
context.put(BindingProviderProperties.CONNECT_TIMEOUT, 3*1000);
context.put(BindingProviderProperties.REQUEST_TIMEOUT,3*1000);
BindingProvider BindingProvider=(BindingProvider)您的\u服务\u端口;
映射上下文=bindingProvider.getRequestContext();
put(BindingProviderProperties.CONNECT\u超时,3*1000);
put(BindingProviderProperties.REQUEST\u超时,3*1000);
我执行了以下步骤,并解决了问题:
jbossws-native-3.4.0是Jboss 5.1.0GA支持的最新版本。你可以看到
StubExt.PROPERTY\u CLIENT\u超时
int timeoutMillisecond=3000;
bp.getRequestContext().put(StubExt.PROPERTY_CLIENT_TIMEOUT, timeoutMillisecond);
顺便说一句,在此版本中,
StubExt.PROPERTY\u CONNECTION\u TIMEOUT
也可以正常工作。您完全没有签出点代码:
URL=新URL(“”)
如您所见,如果不先创建服务,就无法获得端口。因此,超时总是发生在服务创建时。 因此,为端口设置时间是毫无意义的。。。。。。。 有人需要发布一些关于服务超时的信息…而不是端口超时。。。。
除非有人能证明我错了……BindingProviderProperties.REQUEST\u TIMEOUT的可能重复项是“com.sun.xml.ws.REQUEST.TIMEOUT”的变量名,BindingProviderProperties.CONNECT\u TIMEOUT是“com.sun.xml.ws.CONNECT.TIMEOUT”的变量名,OP已经尝试过了,但没有成功。
//1st argument service URI, refer to wsdl document above
//2nd argument is service name, refer to wsdl document above
QName qname = new QName("http://tstsoap/", "HelloWorldImplService");
Service service = Service.create(url, qname);
HelloWorld hello = service.getPort(HelloWorld.class);