0

Tomcat がワーカー スレッドに与えるデフォルト名を変更する簡単な方法はありますか? 理想的には、特定の Web アプリケーションに関連付けられたすべてのスレッドの名前に、おそらくプレフィックスとしてそれを含めたいと思います。たとえば、app1.war と app2.war をデプロイする場合、app1 のすべてのスレッドの名前に app1 を含めたいと思います

4

2 に答える 2

2

フォーラムから、もう少し良いフォーマットでここに再投稿しました。この例では、各スレッドの名前をリクエストURIに変更する単純なフィルターです。

public class ThreadNameFilter implements javax.servlet.Filter { 

    public void doFilter(ServletRequest req, ServletResponse resp, 
        FilterChain fc) throws IOException, ServletException { 

        HttpServletRequest httpReq = (HttpServletRequest)req; 
        final Thread curThr = Thread.currentThread(); 
        final String oldName = curThr.getName(); 

        // change the name of the current thread to something related
        // to the application (e.g. URI)
        try { 
            curThr.setName(httpReq.getRequestURI()); 
            fc.doFilter(req, resp); 
        } finally { 
            curThr.setName(oldName); 
        } 
    } 
} 
于 2012-12-27T16:59:44.700 に答える
0

スレッドは、特定の Web アプリケーションに一時的に「関連付け」られるだけです。

なぜこれが役立つのか想像できません:

  • ログにはコンテキスト情報が含まれている必要があります (例: どのコンポーネントがログを記録しているか)
  • プロファイリングにより、どのコードが実行されているかを簡単に明らかにできます (したがって、「実行中」の Web アプリケーションを明らかにできます)。
  • 例外には完全なスタック トレースが含まれ、どのコードが実行されていたかを明らかにすることができます (したがって、「実行中」だった Web アプリケーションを明らかにします)。
  • 実行時間の長いスレッドは、スレッド ダンプを介して検査できます (したがって、実行時間の長いリクエストで「実行中」の Web アプリケーションが明らかになります)。
于 2012-12-27T21:39:10.903 に答える