2015-03-03 55 views
0

我创建了一个小客户端api连接到专有的类似休息的服务。我使用org.apache.cxf.jaxrs.client.WebClient进行连接。在这个客户端上我打电话get()post()如何从cxf的WebClient获取检查异常或如何处理异常

问题是,如果服务不可用或减慢(我将超时设置为10秒),我只能得到类型为javax.ws.rs.ProcessingException的RuntimeException。但我需要一个检查异常的各种连接问题,让API的用户对他们作出反应。这个怎么做?

这里是配置Web客户端的客户端代码:

private void configureClient() { 
    ClientConfiguration config = WebClient.getConfig(client); 
    HTTPConduit http = (HTTPConduit) config.getConduit(); 
    HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); 
    httpClientPolicy.setConnectionTimeout(TIMEOUT); 
    httpClientPolicy.setAllowChunking(false); 
    http.setClient(httpClientPolicy); 
} 
+0

在try {catch(...){处理该消息并抛出自己的checkedexception时捕获runtimeexception。 – pL4Gu33 2015-03-03 09:41:01

+0

有没有办法(由cxf提供)在全球范围内执行此操作,而不是每次调用?我只想确定在开始写这个锅炉板代码之前。如果这是我可能扩展webclient并抛出检查异常的唯一方式?! – dermoritz 2015-03-03 09:47:13

+0

如果你想在全球范围内使用AOP,可能是一个解决方案。 – vincent 2015-03-03 09:50:05

回答

1

您可以使用javax.ws.rs.WebApplicationException, java.net.ConnectException赶上连接相关的例外(虽然我不记得确切的异常类)和javax.ws.rs.client.ClientException捕捉其他JAXRS例外,例如有400 415等