gpt4 book ai didi

java - 从一个 webapp 抛出 WebapplicationException 并在另一个 webapp 上获取 UniformInterfaceException

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:54:38 28 4
gpt4 key购买 nike

我看到一个奇怪的问题。我有两个网络应用程序。一个用于我们使用 Jersey 公开的其余 Web 服务。另一个具有 JSF 前端实现,它调用上面的 web 服务来获取详细信息。我们使用 Tomcat 作为容器。

我面临的问题是当我调用 rest web 服务时,我会像这样抛出 WebApplicationException

catch (CustomExceptions e) {
ResponseBuilder response = new ResponseBuilderImpl();
response.status(500);
response.entity(e.getStackTrace());
throw new WebApplicationException(e, response.build());
}

另一方面,在 FE webapps 上,我执行以下操作:

try {
r.get(MyClass.class);
return "SUCCESS";
} catch (WebApplicationException wae) {
return "FAILURE";
} catch (UniformInterfaceException wae) {
return "FAILURE";
}

在 catch block 中,我期待 WebApplicationException,但它抛出了奇怪的 UniformInterfaceException。此外,如果它抛出 UniformInterfaceException,它也不会维护堆栈跟踪。甚至我从休息电话传入的响应也丢失了。有人可以帮我如何从其余调用中获取原始堆栈跟踪吗?

提前致谢。

最佳答案

user guide 中所指定和 api documentation , UniformInterfaceException 是您尝试按类型检索特定实体但收到非 200 系列响应时的预期结果。 WebApplicationException 是一个方便的异常,供您在服务器端使用以在异常中嵌入自定义响应。

没有什么是“丢失”的。请记住,您是在此处发出 HTTP 请求。如果您想自己检查状态码和响应,请使用

ClientResponse response = r.get(ClientResponse.class);
if (response.getStatus() == <expected status code>) [
response.getEntity(MyClass.class);
// do happy path stuff
} else {
// bad stuff here
}

或者,假设一切顺利,只检查异常响应:

try {
r.get(MyClass.class);
} catch (UniformInterfaceException e) {
ClientResponse response = e.getResponse();
// do whatever with the raw response
}

关于java - 从一个 webapp 抛出 WebapplicationException 并在另一个 webapp 上获取 UniformInterfaceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6921871/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com