2013-04-13 28 views
10

Guys tôi đang vật lộn với vấn đề mở trang lỗi tùy chỉnh của tôi trong Tomcat trong Windows Environment. Một số giải pháp tôi nhận được nhưng không may mắn. Tôi đã cố gắng gần như tất cả các liên kết nhưng nó không làm việc cho tôi. Một số trong số họ làm việc cho giải pháp khác được triển khai trong Tomcat nhưng không phải cho Web Service của tôiTrang lỗi tùy chỉnh trong Tomcat 7 cho mã lỗi 500

My web.xml

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

<error-page> 
    <location>/error.html</location> 
</error-page> 


Tôi gửi lỗi từ Servlet của tôi 3,0 Application response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

Tôi đã đặt error.html vào thư mục gốc của Dịch vụ Web của tôi.

Một số liên kết tôi đã cho JSP trang thay vì HTML mà tôi cũng đã cố gắng

Trong trường hợp của JSP tôi đã sử dụng:

<%@ page isErrorPage="true" %> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <h1>Error</h1> 
</body> 
</html> 


FYI nó đang làm việc tốt cho Tomcat khác giải pháp sẵn có nó hoạt động hoàn hảo. Nhưng trong số Webservice Tôi nhận được phản hồi 500 nhưng trang đang mở trống. Và một điều khác tôi đã vô hiệu hóa Internet Explorer 9.0 của tôi hiển thị trang lỗi thân thiện vẫn đáp ứng đến 500 từ servlet. Nhưng trang lỗi đang trống.

Nếu có bất kỳ ý tưởng hay nghi ngờ nào về truy vấn của tôi, hãy cho tôi biết. Tôi cần nó càng sớm càng tốt.

+0

Tại sao là một dịch vụ web cố gắng để phục vụ các trang HTML khi một lỗi xảy ra? –

+0

... servlet và JSP của bạn phải làm gì với các dịch vụ web? bạn có chắc bạn biết dịch vụ web là gì không? – eis

+0

vì chúng tôi đang sử dụng trang lỗi tùy chỉnh của chúng tôi trong dự án –

Trả lời

18

Hãy thử đặt đoạn mã sau trong bạn WEB-INF/web.xml

<error-page> 
    <error-code>500</error-code> 
    <location>/Error.jsp</location> 
</error-page> 

<error-page> 
    <exception-type>java.lang.Exception</exception-type> 
    <location>/Error.jsp</location> 
</error-page> 

Trong trường hợp này Error.jsp là cùng cấp như WEB-INF thư mục (không phải bên trong nó).

+0

Harshal Cảm ơn rất nhiều cho câu trả lời của bạn Nhưng tôi đã thử nó cũng Unfortunetly Không may mắn .. –

+1

điều này dường như đã được hữu ích cho tôi! lưu ý, thứ tự quan trọng, bạn muốn ánh xạ 500 trước khi ánh xạ ngoại lệ (như được hiển thị) –

3

Cùng thể được thực hiện theo chương trình nếu bạn sử dụng nhúng Tomcat ví dụ như thế này:

 Context appContext = ...    
     ErrorPage errorPage = new ErrorPage(); 
     errorPage.setErrorCode(HttpServletResponse.SC_NOT_FOUND); 
     errorPage.setLocation("/my_custom_error_page.html"); 
     appContext.addErrorPage(er);