Wenn in Jersey ein interner Fehler auftritt, erhalten Sie eine Antwort mit einer Fehlermeldung im Status 500. Manchmal war das Problem jedoch
500 können mit diesem Verhalten zurückgegeben werden, und es kann schwierig sein, damit umzugehen (ich selbst war ebenfalls beunruhigt).
Als Abhilfe in einem solchen Fall werde ich eine Methode einführen, um die in Jersey aufgetretene Ausnahme zu erfassen und die Informationen an das Protokoll zu senden.
Richten Sie einen Ereignis-Listener ein, um Informationen zu Ausnahmen auszugeben, die während der Anforderungs- / Antwortverarbeitung im Protokoll aufgetreten sind.
Bereiten Sie insbesondere die folgenden "MyApplicationEventListener" und "MyRequestEventListener" vor und registrieren Sie "MyApplicationEventListener" in der Anwendung.
import org.glassfish.jersey.server.monitoring.ApplicationEvent;
import org.glassfish.jersey.server.monitoring.ApplicationEventListener;
import org.glassfish.jersey.server.monitoring.RequestEvent;
import org.glassfish.jersey.server.monitoring.RequestEventListener;
public class MyApplicationEventListener implements ApplicationEventListener {
@Override
public void onEvent(ApplicationEvent event) {
}
@Override
public RequestEventListener onRequest(RequestEvent event) {
return new MyRequestEventListener();
}
}
import java.util.logging.Logger;
import org.glassfish.jersey.server.monitoring.RequestEvent;
import org.glassfish.jersey.server.monitoring.RequestEventListener;
public class MyRequestEventListener implements RequestEventListener {
private static final Logger LOGGER = Logger.getLogger(MyRequestEventListener.class.getName());
@Override
public void onEvent(RequestEvent event) {
switch (event.getType()) {
case ON_EXCEPTION:
LOGGER.severe(event.getException().toString());
}
}
}
Dies sollte die Informationen der aufgetretenen Ausnahme und den Stack-Trace protokollieren.