2016-03-21 2 views
0

Я использую Jetty 9.3.3. Я реализовал мой пользовательский класс обработчик ошибок, метод дескриптор был вызван, но не может понять, почему вызывает не Throwable объект не получил:Jetty настраиваемый класс обработчика ошибок вызывается, но никакой объект, который может быть включен, отсутствует

Вот код моего класса:

public class TestExecuterServerErrorHandler extends ErrorHandler{ 

    private Logger logger=Logger.getLogger(this.getClass().getName()); 

    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException{ 
     logger.systemWriteOutput("handeling error", 3); 

     ByteArrayISO8859Writer writer= new ByteArrayISO8859Writer(4096); 
     Throwable th = (Throwable)request.getAttribute(RequestDispatcher.ERROR_EXCEPTION); 

     response.setContentType("text/xml"); 

     if(th!=null) 
     { 
      writeResponseError(response.getStatus(), th, writer); 
      th.printStackTrace(); 
     } 

     writer.flush(); 
     response.setContentLength(writer.size());  
     writer.writeTo(response.getOutputStream()); 
     writer.destroy();   
    } 
} 

Выход:

handeling error 
handeling error 

Как я могу напечатать причину вызова метода ручки?

ответ

0

У меня была такая же проблема при использовании Jetty и Jersey. Я решил это, установив атрибут ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR на true, предотвращая преждевременное возвращение Джерси (до присоединения исключения к объекту запроса).

 Смежные вопросы

  • Нет связанных вопросов^_^