当Jetty捕获异常并返回错误时,如何禁用默认响应主体?我没有使用任何XML或WAR,我不想添加任何。在Jetty中禁用默认错误响应正文9.4.2
我宁愿避免在每个servlet中都做一个try { // Servlet code } catch (Exception e) { resp.setStatus(500) }
。
如果我不这样做,Jetty将返回一个500响应,指定堆栈跟踪的主体。如果找不到端点,则Jetty将返回一个404响应,并带有“由Jetty提供支持”的正文。我想删除这些机构并保留响应代码。
这是我开始Jetty服务器代码:
private static void startServer() throws Exception {
final org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server(7070);
final WebAppContext context = new WebAppContext("/", "/");
context.setConfigurations(new Configuration[] { new AnnotationConfiguration(), new WebInfConfiguration() });
context.setExtraClasspath("build/classes/main/com/example");
server.setHandler(context);
server.start();
server.join();
}
,只是注解的servlet。有没有程序化的解决方案?在你的解决方案中,每个错误(500,404等)都会转到同一个MyErrorServlet吗?我想返回相同的错误代码,但没有泄露数据的Jetty响应主体。 – niklabaz
您使用“WebAppContext”这一事实意味着您正在使用战争(可能是爆炸目录)。你不能用注释指定错误页面(没有注释),你必须使用'WEB-INF/web.xml'。查看其他答案以了解错误分派和有关错误状态的属性。 –