Problème de servlet mono-thread !
Voici mon soucis : je souhaite mettre en oeuvre le multi threading dans une servlet toute simple et pourtant celle ci n'accèpte qu'une requête GET à la fois (ce qui est un peu dommage dans une appli web !).
Le code est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
<div style="margin-left:40px">
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MaServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException
{
System.out.println("doGet");
try{
System.out.println(" debut traitement...");
for(int i=0;i<510000000;i++){
//simulation d'un temps de traitement
}
System.out.println(" fin traitement");
}
catch (Exception e) {
e.printStackTrace();
}
}
}</div> |
J'utilise resin 2.1.16 et le jdk 5
Mon fichier web.xml est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<div style="margin-left:40px"><?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance">
<display-name>
projetTestServlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>MaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app></div> |
Si j'appelle plusieurs fois la servlet simultanément via l'url http://localhost:8080/test j'obtiens :
Citation:
Resin 2.1.16 (built Tue Feb 15 11:12:27 PST 2005)
Copyright(c) 1998-2003 Caucho Technology. All rights reserved.
Starting Resin on Thu, 12 Oct 2006 16:59:32 +0200 (CET)
http listening to *:8080
doGet
debut traitement...
fin traitement
doGet
debut traitement...
fin traitement
doGet
debut traitement...
fin traitement
Alors que je m'attendais à obtenir quelque chose du genre :
Citation:
doGet
debut traitement...
doGet
debut traitement...
fin traitement
fin traitement
bref ma servlet agit comme si j'avais déclarer la méthode doGet() en synchronized !!!:(
Quelqu'un pourrait m'éclairer ?