當我的Web應用程序中發生錯誤或異常時,我想收到一封電子郵件,以便我可以快速完成修復。我設置了一個JSP錯誤頁面。我喜歡向客戶顯示錯誤頁面,並同時收到一封電子郵件。我爲每個jsp使用jsp和相應的servlet和控制器。發送例外或錯誤的電子郵件
如何在發生錯誤或異常時調用servlet發送電子郵件? web.xml中的配置如何?
請幫助。
當我的Web應用程序中發生錯誤或異常時,我想收到一封電子郵件,以便我可以快速完成修復。我設置了一個JSP錯誤頁面。我喜歡向客戶顯示錯誤頁面,並同時收到一封電子郵件。我爲每個jsp使用jsp和相應的servlet和控制器。發送例外或錯誤的電子郵件
如何在發生錯誤或異常時調用servlet發送電子郵件? web.xml中的配置如何?
請幫助。
您可以使用Java Mail API,javadoc here和here是開發人員指南。
我可能是錯的,但從您的問題看來,您認爲它是配置的問題,或者向web.xml
添加一些參數。實際上它更復雜些,因爲Java EE比這更「低級」。
您需要編寫一些使用JavaMail API發送電子郵件的代碼。 (Here是一個源碼示例。)該代碼必須放入異常/錯誤處理程序中。
這是一個好主意,可以配置此功能,以便您可以在應用程序的不同部分打開或關閉它。
不論出於何種原因,仔細想想發送郵件失敗時會發生什麼情況也是一個好主意。
而且,當然,您將需要一個現有的郵件服務器與現有的郵件帳戶。
雅...我正在尋找web.xml配置。我喜歡在出現錯誤時自動調用我的servlet。並且有任何想法,我如何在servlet中獲取異常,以便我可以通過電子郵件發送詳細信息? – coder247 2009-12-21 09:27:56
您可以編寫自己的解決方案,也可以在標準日誌包中使用電子郵件選項。例如,log4j具有SMTPAppender,它將執行您所需的操作。
我建議您使用現有的監視解決方案,如log4j(@Ben),nagios或其中一種商業支持的開源產品。
如果你滾你自己的解決方案,注意類似的問題:
大量的誤報給您發送監控垃圾郵件
監控垃圾郵件導致你錯過真正的報警
由於電子郵件中斷而丟失報警
由於系統已經過時,弛緩性的而不是拋出異常
log4j的解決方案是特別好,因爲你可以配置它也發送previsous日誌行,所以你必須對異常是如何發生的
您應該調查更多的上下文深入瞭解如何在Servlet API中配置錯誤頁面。
在該錯誤頁面中,您可以對觸發異常執行任何操作。
,請參閱Java EE教程如何在JSP頁面中在http://java.sun.com/javaee/5/docs/tutorial/doc/bnahe.html#bnahi
編輯處理錯誤:另請參閱如何在http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html只是在Tomcat做的文檔。搜索JavaMail。
你在使用Spring嗎?如果是,那麼只要發生錯誤,您就可以使用異常解析器重定向到特定的控制器。如果發生JSP錯誤,您可以配置en錯誤頁面發送郵件。
這不僅取決於您已經使用的API和/或框架(例如log4j),還取決於您如何處理全局異常。如果你只是在web.xml
中定義了error-page
,那麼例如上述的log4j肯定不會看到/處理它。你需要自己捕捉並記錄它。
可以使用Filter
監聽的/*
的url-pattern
此:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
try {
chain.doFilter(request, response);
} catch (Exception e) {
logger.error(e); // Let "error" level associate with SMTPAppender.
throw new ServletException(e); // Will be handled by error-page.
}
}
或者如果您有一個控制器servlet之一:
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
View view = new View(request, response);
Action action = ActionFactory.getAction(request);
try {
action.execute(view);
} catch (Exception e) {
logger.error(e); // Let "error" level associate with SMTPAppender.
throw new ServletException(e); // Will be handled by error-page.
}
view.navigate();
}
作爲短但語義討厭的替代你也可以在JSP中使用scriptlets。 exception
在JSP中作爲隱式變量可用。將其記錄在錯誤頁面中,並讓記錄器處理郵件內容。例如。
<% logger.error(exception); %>
我試圖實現這一個,但我沒有得到它。什麼意思視圖類?我如何能夠實現這一點?謝謝。 – 2013-03-06 21:34:44
web.xml配置如何?當發生一個異常或錯誤時,如何重定向到我的Exceptionservlet? – coder247 2009-12-21 09:18:44