我正在使用ServletRequestListener在从Web服务java应用程序接收请求时执行某些逻辑。 在某些时候,我想停止收听收到的每个请求。有没有办法以编程方式停止或禁用ServletRequestListener侦听器?
答案 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");