2016-03-21 6 views
0

Ich benutze Jetty 9.3.3. Ich implementierte meine benutzerdefinierte Fehlerhandler-Klasse, wurde der Griff Methode aufgerufen, kann aber nicht erkennen, warum verursachen keine throwable Objekt bekam ist:Jetty customised Die Error Handler-Klasse wird aufgerufen, aber kein umwerfbares Objekt ist erhalten.

Hier ist der Code meiner Klasse:

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();   
    } 
} 

Der Ausgang:

handeling error 
handeling error 

Wie kann ich die Ursache des Aufrufs der Handle-Methode drucken?

Antwort

0

Ich hatte das gleiche Problem bei der Verwendung von Jetty und Jersey. Ich löste es, indem ich das Attribut ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR auf true einstellte, um zu verhindern, dass Jersey die Antwort vorzeitig zurücksendet (vor dem Anhängen der Ausnahme an das Anfrageobjekt).

Verwandte Themen