2

私はウェブアプリケーションを持っています。によってデプロイされた私のアプリケーションTomcat。次のコードで、クラスにServlet Filterデータを配置するためのコードを作成します。MDCSLF4J

MDC.put("Id", UUID.randomUUID().toString();

2 回目または 3 回目のリクエストでアプリケーションを実行すると、UUID が重複します。このシナリオは逐次的であり、同時ではありません。スレッドコンテキストがクリアされないスレッドプールが存在すると思います。

4

1 に答える 1

2

この構造を使用して、ID が確実に削除されるようにします。

try {
    MDC.put("Id", UUID.randomUUID().toString());

    // The rest of your code
} finally {
    MDC.remove("Id");
}

(catch ブロックは必要ありません)。Idこれにより、このトランザクションのキーが削除されることが保証されます。

また、もちろん、Tomcat はスレッド プールを使用します。これは、同時実行時の要求を管理する方法です。さらに読む: https://tomcat.apache.org/tomcat-6.0-doc/config/executor.html

于 2015-07-21T04:34:56.253 に答える