當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'。查看其他答案以瞭解錯誤分派和有關錯誤狀態的屬性。 –