【发布时间】:2020-06-18 17:30:56
【问题描述】:
我使用带有 Spring Boot 和 Jetty 的 Apache Camel 作为嵌入式服务器。
我有一个使用以下路由定义的 RouteBuilder:
onException(Exception.class)
.handled(true)
.process(new ErrorProcessor());
rest("/mysvc/requests/{id}")
.consumes("application/json")
.produces("application/json")
.get()
.to("direct:processMyRequest");
from("direct:processMyRequest")
.log("Hello World");
当我使用 GET /mysvc/requests/123 之类的请求访问我的 REST 端点时,我会收到一个有效的回复 Hello World。
如果我遇到了错误的端点,例如 GET /mysvc/requests(不提供 id),我只需得到一个响应代码 404 和以下响应正文:
{
url: "/mysvc/requests",
status: "404",
message: "Not Found",
servlet: "CamelServlet",
}
我注意到onException 子句没有捕获异常,我的ErrorProcessor() 也没有调用。为什么会这样?
如何确保onException 子句捕获此类错误?
【问题讨论】:
-
你能附上
ErrorProcessor的代码吗?
标签: java spring-boot rest servlets apache-camel