1

私は ServletRequestListener を使用して、Web サービス Java アプリケーションからリクエストを受信するときに特定のロジックを実行しています。ある時点で、受信した各リクエストのリッスンを停止したいと思います。プログラムで 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 に答える