私はSpring MVC FrameWorkを使ってシステムを開発していますが、私のアプリはリクエストを1つずつ処理することを発見しました。私のアプリはLinuxのtomcatサーバーにデプロイされました。Spring Concurrency並列リクエスト
これを確認するには、最初に開始時間を取得してから10秒間スリープしてから終了時間を得て、それらを表示する単純なページを作成しました。それから、ブラウザでこのページに同時に3回アクセスします。以下の結果は、サーバーが一度に1つの要求しか処理しないことを確認します。
スタート:木6月2日午後5時01分24秒CST 2016 終了:木6月2日午後5時01分34秒CST 2016 TimeLapsed:10001
スタート:木6月2日午後5時01分34秒CST 2016 終了:木6月2日17時01分44秒CST 2016 TimeLapsed:10001
スタート:木6月2日17時01分44秒CST 2016 終了:木6月2日午後五時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";
}
}
マイビューコード:
<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>
<%@ 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がどのように私は同時に複数の要求を処理するために私のアプリを設定することができますか?または、tomcatの設定ですか?
スレッドを見てみましょう。 'System.out.println(Thread.currentThread()。getName());'を追加し、各リクエストのログを記録します。 – codependent
スレッド:http-bio-8080-exec-23開始日:6月2日17:49:51 CST 2016終了日:6月2日17:50:01 CST 2016時間経過:10001 \t \t スレッド:http-bio-8080 -exec-24 Start:Thu Jun 02 17:50:03 CST 2016終了:6月2日17:50:13 CST 2016 TimeLapsed:10000 \t \t スレッド:http-bio-8080-exec-28開始日:Thu Jun 02 17:50:13 CST 2016終了:6月2日17:50:23 CST 2016 TimeLapsed:10000 – akoayisangmahusaynaprogrammer
リクエストは同じスレッドではなく、3つの異なるスレッドで処理されます。http-bio-8080-exec-23 、http-bio-8080-exec-24、http-bio-8080-exec-28のように問題はありません。 – codependent