1

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

4

1 回答 1

1

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

例如

@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");
于 2013-02-01T14:53:16.870 回答