1
5 API: Web容器不能在过滤器放置到服务,如果init方法要么 1.Throws一个的ServletException 2,不被web容器中定义的时间周期内返回是否有可能不把servlet过滤器投入使用?基于Java EE
什么我做的是在init方法的任何部分工作失败时抛出一个ServletException。 但是,我观察到的是Web容器启动,但所有的请求将返回404错误。有什么建议么?
5 API: Web容器不能在过滤器放置到服务,如果init方法要么 1.Throws一个的ServletException 2,不被web容器中定义的时间周期内返回是否有可能不把servlet过滤器投入使用?基于Java EE
什么我做的是在init方法的任何部分工作失败时抛出一个ServletException。 但是,我观察到的是Web容器启动,但所有的请求将返回404错误。有什么建议么?
我相信这样做的逻辑是过滤器是处理请求的组成部分;如果零件失败,则整个请求失败。因此,无法启动的过滤器被认为无法提供服务,因此任何通常会通过它的请求都会失败。
如果过滤器是可选的话,那么我会建议一个逻辑(几乎是伪代码):
private boolean canServe = false;
public void init(FilterConfig fc) {
if(filter activation condition) {
canServe = true;
}
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
if(canServe) {
// filter logic - filter is ON
}
else chain.doFilter(request, response); // filter is OFF
}
另外,如果过滤器的可用性可以在编译时被配置(例如环境基础 - DEV ,STAGING,PRODUCTION),可以使用将从web.xml中删除过滤器定义的条件构建(例如Ant)。
您期望的行为是什么 - 容器关闭? – home
@home no。相反,Web应用程序仍应该在不调用该过滤器的情况下工作 – Bobo