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:
J'utilise resin 2.1.16 et le jdk 5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Mon fichier web.xml est le suivant :
Si j'appelle plusieurs fois la servlet simultanément via l'url http://localhost:8080/test j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Alors que je m'attendais à obtenir quelque chose du genre :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
bref ma servlet agit comme si j'avais déclarer la méthode doGet() en synchronized !!!doGet
debut traitement...
doGet
debut traitement...
fin traitement
fin traitement![]()
Quelqu'un pourrait m'éclairer ?
Partager