Im entwickelnden System mit Spring MVC FrameWork dann habe ich festgestellt, dass meine App Anfragen einzeln bearbeitet. Meine App wurde in Tomcat Server unter Linux bereitgestellt.Spring Concurrency parallel Anfrage
Um dies zu bestätigen, habe ich eine einfache Seite erstellt, die zuerst die Startzeit erhält, dann für zehn Sekunden ruht, dann die Endzeit erhält und sie dann in der Ansicht anzeigt. Dann greife ich auf diese Seite in meinem Browser 3 mal gleichzeitig zu. Das folgende Ergebnis bestätigt, dass der Server die Anfrage nur einzeln verarbeitet.
Start: Do 2. Juni 17.01.24 CST 2016 Ende: Do 2. Juni 17.01.34 CST 2016 Timelapsed: 10001
Start: Do 2. Juni 17.01.34 CST 2016 Ende: Do 2. Juni 17.01.44 CST 2016 Timelapsed: 10001
Start: Do 2. Juni 17.01.44 CST 2016 Ende: Do 2. Juni 17.01.54 CST 2016 Timelapsed: 10001
Mein Controller-Code:
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.Date;
@Controller
@RequestMapping("/")
public class ParallelTestController {
@RequestMapping(value="/test", method = RequestMethod.GET)
public String test(ModelMap model) {
String startTimeStr = new Date().toString();
long startTime = System.currentTimeMillis();
try{
Thread.sleep(10000);
}catch(Exception e){
}
String endTimeStr = new Date().toString();
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
model.addAttribute("startTime", startTimeStr);
model.addAttribute("endTime", endTimeStr);
model.addAttribute("totalTime", totalTime);
return "welcome";
}
}
Meine Ansicht Code:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>HelloWorld page</title>
</head>
<body>
Greeting : ${greeting}
<br />
Start : ${startTime}
<br />
End : ${endTime}
<br />
TimeLapsed : ${totalTime}
<br />
</body>
</html>
web.xml
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>EMS</display-name>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Wie kann ich konfigurieren meine app mehrere Anforderungen gleichzeitig zu behandeln? Oder ist Tomcat-Konfiguration?
Lassen Sie uns die Threads sehen. füge vor 'String startTimeStr = new Date(). toString();' folgende Zeile hinzu: 'System.out.println (Thread.currentThread(). getName());' und poste das Protokoll für jede Anfrage. – codependent
Thread: http-bio-8080-exec-23 Start: Do Jun 02 17:49:51 CST 2016 Ende: Do Jun 02 17:50:01 CST 2016 TimeLapsed: 10001 \t \t Thema: http-Bio-8080 -exec-24 Start: Do Jun 02 17:50:03 CST 2016 Ende: Do Jun 02 17:50:13 CST 2016 TimeLapsed: 10000 \t \t Thema: http-bio-8080-exec-28 Start: Do Jun 02 17:50:13 CST 2016 Ende: Do Jun 02 17:50:23 CST 2016 TimeLapsed: 10000 – akoayisangmahusaynaprogrammer
Die Anfragen werden nicht vom selben Thread bearbeitet, sondern von 3 verschiedenen: http-bio-8080-exec-23 , http-bio-8080-exec-24 und http-bio-8080-exec-28, es sollte also kein Problem geben. – codependent