如果在指定时间内没有响应,则丢弃Webservice调用

时间:2014-03-24 07:44:26

标签: java web-services

如果在特定时间内没有来自服务器的响应,如何从客户端程序(Java)停止调用的Web服务。如果在指定时间内没有来自服务器的响应,我需要准备错误消息并将消息发送到UI。

try {
    applicationProcessRs = service.processApplication(applicationProcessRq);
} catch ( ApplicationProcessFaultMsg e ) {
    log.error( e.getMessage(), e );
}

谢谢,
Ramakrishna K

1 个答案:

答案 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才能使其正常工作