Si une erreur interne se produit à Jersey, vous recevrez une réponse avec un message d'erreur au statut 500. Cependant, parfois le problème était
500 peuvent être renvoyés avec un comportement comme celui-ci, et il peut être difficile de le gérer (j'étais moi-même également troublé).
Comme remède dans un tel cas, je présenterai une méthode pour récupérer l'exception qui s'est produite à Jersey et envoyer les informations au journal.
Configurez un écouteur d'événements pour afficher des informations sur les exceptions qui se sont produites pendant le traitement des demandes / réponses dans le journal.
Plus précisément, préparez les suivants MyApplicationEventListener '' et
MyRequestEventListener '', et enregistrez-en `` MyApplicationEventListener '' dans l'application.
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());
}
}
}
Cela devrait consigner les informations de l'exception qui s'est produite et la trace de la pile.