Jersey가 보이지 않는 예외를 기록해 주세요.

4706 단어 jerseyJava

개시하다


Jersey에서 내부 오류가 발생하면 상태 500에서 오류 메시지와 함께 응답이 반환됩니다.
  • 응답에 자세한 오류 메시지가 없습니다!
  • 서버 로그에도 정보가 없습니다!
  • 이런 움직임에는 500개의 리베이트가 있을 수 있고, 나도 어떻게 대처해야 할지 모를 때가 있다.

    이럴 때의 대응법으로는 제리에서 발생한 예외를 줍고 정보를 로그에 전달하는 방법을 소개한다.

    코드


    이동 발생기를 설정하여 요청/응답 처리에서 발생한 이상 정보를 로그에 출력합니다.
    구체적으로 다음MyApplicationEventListenerMyRequestEventListener를 준비해 이 중MyApplicationEventListener을 응용 프로그램에 등록한다.
    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());
            }
        }
    }
    
    이렇게 하면 예외 정보와 창고 추적이 로그에 나타날 것입니다.

    참고 자료

  • Event Listeners - Jersey User Guide
  • Jersey 2.0 and Moxy Internal Server Error But No Server Log - Stack Overflow
  • 좋은 웹페이지 즐겨찾기