Java 是否可以不将servlet过滤器放入服务中?

Java 是否可以不将servlet过滤器放入服务中?,java,servlets,servlet-filters,Java,Servlets,Servlet Filters,基于java ee 5 api: 如果init方法 1.抛出ServletException 2.在web容器定义的时间段内不返回 我所做的是在init方法中的任何部分工作失败时抛出ServletException。 然而,我所观察到的是,web容器启动,但所有请求都将返回404错误。有什么建议吗?我相信这样做的逻辑是,过滤器是处理请求不可或缺的一部分;如果部分失败,则整个请求将失败。因此,无法初始化的筛选器被视为无法服务,因此任何正常通过它的请求都将失败 如果过滤器对于您的情况是可选的,那么我

基于java ee 5 api: 如果init方法 1.抛出ServletException 2.在web容器定义的时间段内不返回

我所做的是在init方法中的任何部分工作失败时抛出ServletException。
然而,我所观察到的是,web容器启动,但所有请求都将返回404错误。有什么建议吗?

我相信这样做的逻辑是,过滤器是处理请求不可或缺的一部分;如果部分失败,则整个请求将失败。因此,无法初始化的筛选器被视为无法服务,因此任何正常通过它的请求都将失败

如果过滤器对于您的情况是可选的,那么我建议使用如下逻辑(几乎是伪代码):


或者,如果可以在编译时配置过滤器可用性(例如,基于环境的-开发、暂存、生产),则可以使用将从web.xml中删除过滤器定义的条件构建(例如,Ant)。

您预期的行为是什么-容器关闭?@home no.代替,web应用程序在不调用该筛选器的情况下仍应工作
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
}