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 : 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>
J'utilise resin 2.1.16 et le jdk 5
Mon fichier web.xml est le suivant :
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>
Si j'appelle plusieurs fois la servlet simultanément via l'url http://localhost:8080/test j'obtiens :
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 :
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 ?