我想在我的网络应用程序中发生错误或异常时收到一封电子邮件,以便我可以快速完成修复。我已经设置了一个JSP错误页面。我喜欢向客户端显示错误页面,同时收到一封电子邮件。我为每个jsp使用jsp和相应的servlet和控制器。
如何在发生错误或异常时调用servlet发送电子邮件? web.xml中的配置如何?
请帮忙。
答案 0 :(得分:5)
您可以编写自己的解决方案代码,也可以使用标准日志记录包中的电子邮件选项。例如,log4j具有SMTPAppender,可以满足您的需要。
答案 1 :(得分:5)
这不仅取决于您已经使用的API和/或框架(例如log4j),还取决于您如何处理全局异常。如果您只是在error-page
中确定了web.xml
,那么前面提到的log4j肯定不会看到/处理它。你需要抓住并记录你自己。
您可以使用Filter
url-pattern
/*
来监听{/ 1}}:
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中可用作隐式变量。将其记录在错误页面中,让记录器处理邮件。 E.g。
<% logger.error(exception); %>
答案 2 :(得分:0)
您可以使用Java Mail API,javadoc here,而here是开发人员指南。
答案 3 :(得分:0)
我可能错了,但是从您的问题看来,您希望它是配置问题,或者向web.xml
添加一些参数。它实际上有点复杂,因为Java EE比那更“低级”。
您需要使用JavaMail API编写一些发送电子邮件的代码。 (Here是一个源代码示例。)该代码必须包含在异常/错误处理程序中。
使这个功能可配置是个好主意,这样你就可以在应用程序的不同部分打开或关闭它。
无论出于何种原因,仔细考虑发送邮件时发生的情况也是一个好主意。
当然,您需要一个现有的邮件服务器和现有的邮件帐户。
答案 4 :(得分:0)
我建议您使用现有的监控解决方案,如log4j(@Ben),nagios或其中一种商业支持的开源产品。
如果您使用自己的解决方案,请注意以下问题:
发送监控垃圾邮件的大量误报
监控垃圾邮件,导致您错过真实警报
因电子邮件中断而丢失警报
没有警报,因为您的系统已经过紧张而不是抛出异常
答案 5 :(得分:0)
log4j解决方案特别好,因为您可以将其配置为发送预先记录的日志行,这样您就可以了解有关异常如何发生的更多上下文
答案 6 :(得分:0)
您应该彻底调查如何在Servlet API中配置错误页面。
在该错误页面中,您可以使用触发异常执行任何操作。
请参阅Java EE教程,了解如何在http://java.sun.com/javaee/5/docs/tutorial/doc/bnahe.html#bnahi
处理JSP页面中的错误编辑:另请参阅http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html处的Tomcat文档。搜索JavaMail。
答案 7 :(得分:0)
你在使用Spring吗?如果是,则可以在发生错误时使用异常解析程序重定向到特定控制器。如果出现JSP错误,您可以配置错误页面以发送邮件。