如果在特定时间内没有来自服务器的响应,如何从客户端程序(Java)停止调用的Web服务。如果在指定时间内没有来自服务器的响应,我需要准备错误消息并将消息发送到UI。
try {
applicationProcessRs = service.processApplication(applicationProcessRq);
} catch ( ApplicationProcessFaultMsg e ) {
log.error( e.getMessage(), e );
}
谢谢,
Ramakrishna K
答案 0 :(得分:0)
如果您想为特定服务设置超时,一旦您创建了代理,您需要将其转换为BindingProvider(您已知道),获取请求上下文并设置您的属性。在线JAX-WS文档是错误的,这些是正确的属性名称
MyInterface myInterface = new MyInterfaceService().getMyInterfaceSOAP();
Map<String, Object> requestContext = ((BindingProvider)myInterface).getRequestContext();
requestContext.put(BindingProviderProperties.REQUEST_TIMEOUT, 3000); // Timeout in millis
requestContext.put(BindingProviderProperties.CONNECT_TIMEOUT, 1000); // Timeout in millis
myInterface.callMyRemoteMethodWith(myParameter);
当然,这是一种可怕的做事方式,我会创建一个很好的工厂来生产这些绑定提供程序,可以注入你想要的超时。
请注意,REQUEST_TIMEOUT / CONNECT_TIMEOUT属性实际上是从SUN内部类com.sun.xml.internal.ws.developer.JAXWSProperties和(至少在32位Linux上)javac 1.6.0_27和javac 1.7继承的。 0_03无法编译此代码(类似于bugs.sun.com/view_bug.do?bug_id=6544224)...您需要将-XDignore.symbol.file传递给javac才能使其正常工作