簡體   English   中英

調用了 Jetty 自定義的錯誤處理程序類,但沒有得到可拋出的對象

[英]Jetty customized Error handler class is called but no throwable object is Got

我正在使用 Jetty 9.3.3。 我實現了我的自定義錯誤處理程序類,調用了 handle 方法,但不明白為什么沒有得到可拋出的對象:

這是我班級的代碼:

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

如何打印 handle 方法調用的原因?

使用 Jetty 和 Jersey 時我遇到了同樣的問題。 我通過將屬性ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR設置為true來解決它,防止 Jersey 過早返回響應(在將異常附加到請求對象之前)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM