当我的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