如何以编程方式停止ServletRequestListener?

时间:2013-02-01 14:48:42

标签: java servlets

我正在使用ServletRequestListener在从Web服务java应用程序接收请求时执行某些逻辑。 在某些时候,我想停止收听收到的每个请求。有没有办法以编程方式停止或禁用ServletRequestListener侦听器?

1 个答案:

答案 0 :(得分:1)

虽然可以add a listener programmatically,但是无法以编程方式停止或删除侦听器。最好的办法是让它在继续之前检查一些应用程序范围的变量,然后切换该应用程序范围的变量。

E.g。

@Override
public void requestInitialized(ServletRequestEvent event) {
    if (event.getServletContext().getAttribute("disableListener") == Boolean.TRUE) {
        return;
    }

    // Do the original job here.
}

@Override
public void requestDestroyed(ServletRequestEvent event) {
    if (event.getServletContext().getAttribute("disableListener") == Boolean.TRUE) {
        return;
    }

    // Do the original job here.
}

并禁用它,只需执行

servletContext.setAttribute("disableListener", true);

并重新启用它,只需执行

servletContext.removeAttribute("disableListener");