Javaサーブレットは複数のリクエストを同時に処理していますが、私はStackOverflowとGoogleを検索しました。しかし、私は今はかなり混乱しています。私は、ブロック動作を示すような単純なサーブレットを書いています。サーブレットは複数の同時ブラウザリクエストを同期して処理しているようです
ので、私は簡単なサーブレットがあります。そして、私は2つのブラウザウィンドウを持って
public class MyServlet extends HttpServlet
{
private static final long serialVersionUID = 2628320200587071622L;
private static final Logger logger = Logger.getLogger(MyServlet.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
logger.info("[doGet] Test before");
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logger.info("[doGet] Test after");
resp.setContentType("text/plain");
resp.getWriter().write("OK");
}
}
を、私は私のサーブレットをヒット〜同時に開きます。 その結果、最初の要求が2番目の要求をブロックします。ログも示しています
10:49:05,088 [http-8383-Processor14] INFO MyServlet - [doGet] Test before
10:50:05,096 [http-8383-Processor14] INFO MyServlet - [doGet] Test after
10:50:05,106 [http-8383-Processor22] INFO MyServlet - [doGet] Test before
10:51:05,112 [http-8383-Processor22] INFO MyServlet - [doGet] Test after
私は何か...同時リクエストを処理することができるようになってサーブレットをしないのですように私は感じるが、それはそれをやっているように見えるdoes notの。私はdoGetの代わりにサービスメソッドについても上記と同じことを行い、同じことをします。
任意のポインタ?
ありがとうございました
お使いのブラウザは要求をシリアル化する可能性があります。これを2台の異なるコンピュータまたは2台の異なるブラウザから試すとどうなりますか? (つまりiexploereとfirefox)HTTPアクセスログをチェックして、リクエストがサーブレットコンテナに同時に到着しているかどうかを確認することもできます。 – rsp
'web.xml'と(これはtomcatと仮定して)' server.xml'を表示できますか? – beny23
@beny:問題の原因を理解するうえで、それがどの程度正確に役立つかはわかりません。あなたは精緻化できますか? – BalusC