当Tomcat启动时,它调用我的ServletContextListener来获取数据库连接,稍后我将在其他servlet中使用getServletContext()。它在我的web.xml中被称为:
listener
(我删除了<>因为它们无法在此消息中正确显示。>
listener-class org.ppdc.database.DBCPoolingListener /listener-class
/listener>
如果我在Tomcat启动时无法连接到数据库,则会收到404错误,因为Tomcat无法启动该应用程序。
此时如何将用户重定向到自定义错误页面?我在我的web.xml中尝试了以下内容(我原来的<>括号):
(错误页)
(误差code404 /出错码)
(位置/ file_not_found.html /位置)
(/ error-page)
有关如何在Tomcat尝试启动应用程序时将用户重定向到我的错误页面的任何想法?
由于 维克
答案 0 :(得分:1)
如果您的应用程序无法加载,那就是它。 Tomcat没有运行它,也不提供错误页面。
因此,如果你想处理半死状态,你需要从半死状态开始。幸运的是,如果安装了Filter,那么servlet中的代码可以检查应用程序是否已经半死,在控制转移到任何servlet之前执行此操作。
在web.xml中声明一个过滤器:
<filter>
<filter-name>IsHalfDeadFilter</filter-name>
<filter-class>my.package.IsHalfDeadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>IsHalfDeadFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
然后实施doFilter
方法以重定向到您的错误页面。
@Override
public void doFilter (
final ServletRequest request,
final ServletResponse response,
final FilterChain chain
) throws
IOException,
ServletException
{
if ( isHalfDead )
{
// redirect to error page
return;
}
chain.doFilter( request, response );
}
详细了解过滤器here