Glassfish 3 Web プロファイルを使用していますが、サーブレットで同時に要求を実行する http ワーカーを取得できません。
これが私が問題を観察した方法です。現在のスレッド名を標準出力に書き込み、10 秒間スリープする非常に単純なサーブレットを作成しました。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(Thread.currentThread().getName());
try {
Thread.sleep(10000); // 10 sec
}
catch (InterruptedException ex) {
}
}
また、複数の同時リクエストを実行している場合、ログでリクエストが順次実行されていることを明確に確認できます (10 秒ごとに 1 つのトレース)。
INFO: http-thread-pool-8080-(2)
(10 seconds later...)
INFO: http-thread-pool-8080-(1)
(10 seconds later...)
INFO: http-thread-pool-8080-(2)
等
私の GF 設定はすべて変更されていません。これはすぐに使用できる設定です (デフォルトのスレッド プールは最小 2 スレッド、正しく思い出せば最大 5 スレッドです)。
sleep() が他のすべてのワーカースレッドをブロックする理由が本当にわかりません。どんな洞察も大歓迎です!