Im развивающаяся система, использующая Spring MVC FrameWork, тогда я обнаружил, что мое приложение обрабатывает запрос по одному за раз. Мое приложение было развернуто на сервере tomcat на linux.Параллельный запрос Spring Concurrency
Чтобы подтвердить это, я создал простую страницу, которая сначала запускает старт, а затем спает в течение десяти секунд, а затем заканчивает время, а затем отображает их на виду. Затем я просматриваю эту страницу в браузере 3 раза одновременно. Результат ниже подтверждает, что сервер обрабатывает только запрос по одному.
Начало: чт 2 июня 17:01:24 CST 2016 Конец: чт 2 июня 17:01:34 CST 2016 TimeLapsed: 10001
Начало: чт 2 июня 17:01:34 CST 2016 Конец: чт 2 июня 17:01:44 CST 2016 TimeLapsed: 10001
Начало: чт 2 июня 17:01:44 CST 2016 Конец: чт 2 июня 17:01:54 CST 2016 TimeLapsed: 10001
Мой контрольный код:
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";
}
}
мой взгляд Код:
<%@ 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>
Как я могу настроить мое приложение для обработки нескольких запросов одновременно? Или есть tomcat config?
Давайте посмотрим на темы. add, перед 'String startTimeStr = new Date(). toString();', эта строка: 'System.out.println (Thread.currentThread(). getName());' и размещать журнал для каждого запроса. – codependent
Тема: http-bio-8080-exec-23 Начало: Чт июн 02 17:49:51 CST 2016 Конец: Чт июн 02 17:50:01 CST 2016 TimeLapsed: 10001 \t \t Тема: http-bio-8080 -exec-24 Начало: Чт Июн 02 17:50:03 CST 2016 Конец: Чт июн 02 17:50:13 CST 2016 Время Задержка: 10000 \t \t Тема: http-bio-8080-exec-28 Начало: Чт июня 02 17:50:13 CST 2016 Конец: Чт июн 02 17:50:23 CST 2016 TimeLapsed: 10000 – akoayisangmahusaynaprogrammer
Запросы обрабатываются не тем же потоком, а тремя разными: http-bio-8080-exec-23 , http-bio-8080-exec-24 и http-bio-8080-exec-28, поэтому проблем не должно быть. – codependent