如何从 cxf 的 WebClient 获取已检查的异常或如何处理异常
How to get checked exception from cxf's WebClient or how to handle Exceptions
我创建了一个小客户端 api 来连接到专有的类似休息的服务。我使用 org.apache.cxf.jaxrs.client.WebClient
进行连接。在这个客户端我调用 get()
和 post()
.
问题是,如果服务不可用或速度变慢(我将超时设置为 10 秒),我只会得到 javax.ws.rs.ProcessingException
类型的 RuntimeException。但是我需要一个检查异常来处理各种连接问题,让 api 的用户对它们做出反应。如何做到这一点?
这是配置 WebClient 客户端的代码:
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);
}
您可以使用 javax.ws.rs.WebApplicationException, java.net.ConnectException
来捕获与连接相关的异常(虽然我不记得确切的异常 class)和 javax.ws.rs.client.ClientException
来捕获其他 JAXRS 异常,例如 400 415 等.
我创建了一个小客户端 api 来连接到专有的类似休息的服务。我使用 org.apache.cxf.jaxrs.client.WebClient
进行连接。在这个客户端我调用 get()
和 post()
.
问题是,如果服务不可用或速度变慢(我将超时设置为 10 秒),我只会得到 javax.ws.rs.ProcessingException
类型的 RuntimeException。但是我需要一个检查异常来处理各种连接问题,让 api 的用户对它们做出反应。如何做到这一点?
这是配置 WebClient 客户端的代码:
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);
}
您可以使用 javax.ws.rs.WebApplicationException, java.net.ConnectException
来捕获与连接相关的异常(虽然我不记得确切的异常 class)和 javax.ws.rs.client.ClientException
来捕获其他 JAXRS 异常,例如 400 415 等.