[JAVA] Enregistrer les exceptions invisibles à Jersey

introduction

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é).

jersey-500-internal-error.png

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.

code

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.

Matériel de référence

Recommended Posts

Enregistrer les exceptions invisibles à Jersey
Exceptions rencontrées dans le kit AWS SDK
Enregistrer la sortie dans un fichier en Java
Attrapez plusieurs exceptions ensemble dans Java
Types d'exceptions dans les systèmes d'entreprise