Wie kann ich den Standardantwortkörper deaktivieren, wenn Jetty eine Ausnahme abfängt und einen Fehler zurückgibt? Ich verwende keine XML oder WAR und möchte keine hinzufügen.Deaktivieren Sie den Standardfehlerantwortkörper in Jetty 9.4.2
Ich bevorzuge es, eine try { // Servlet code } catch (Exception e) { resp.setStatus(500) }
in jedem Servlet zu tun.
Wenn ich das nicht tue, wird Jetty eine 500-Antwort mit einem Rumpf zurückgeben, der die Stapelverfolgung angibt. Wenn ein nicht gefundener Endpunkt erreicht wird, gibt Jetty eine 404-Antwort mit dem Text "Powered by Jetty" zurück. Ich möchte diese Körper entfernen und einfach den Antwortcode behalten.
Dies ist der Code, der meine Jetty-Server startet:
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();
}
ich keine XML oder WAR Artefakt bin mit, Annotationen nur für Servlets. Gibt es eine programmatische Lösung? Wird in Ihrer Lösung jeder Fehler (500, 404 usw.) zum selben MyErrorServlet? Ich möchte denselben Fehlercode ohne den Jetty-Antwortkörper, der Daten verliert, zurückgeben. – niklabaz
Die Tatsache, dass Sie einen 'WebAppContext' verwenden, bedeutet, dass Sie einen Krieg verwenden (es kann ein explodiertes Verzeichnis sein). Sie können keine Fehlerseite mit Annotationen angeben (es gibt keine Annotation), Sie müssen die Datei 'WEB-INF/web.xml' verwenden. Siehe die andere Antwort, um die Fehlerverteilung und die Attribute über den Fehlerstatus zu verstehen. –