[SPRING] Spring-Boot : 여러 요청을 동시에 처리
SPRINGSpring-Boot : 여러 요청을 동시에 처리
나는 RESTful 웹 서비스를 만들기 위해 Spring Boot를 사용하고있다. 내 IDE는 Eclipse Oxygen입니다.
Chrome을 통해 2 초마다 여러 개의 HTTP get 요청을 보내지 만 하나씩 실행됩니다. 각 요청은 이전 요청이 완료 될 때까지 대기합니다.
여기 내 컨트롤러 코드 :
@RestController
@RequestMapping("/dummy")
public class DummyController {
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<Map<String, String>> dummytsp(@RequestParam(value="msg", defaultValue="Hello") String msg) {
System.out.println("" + new Date() + ": ThreadId " + Thread.currentThread().getId());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<String, String> response = new HashMap<>();
response.put("message", msg);
return new ResponseEntity<>(response, HttpStatus.OK);
}
}
내 콘솔 출력은 다음과 같습니다.
Thu Sep 14 11:31:15 EDT 2017: ThreadId 25
Thu Sep 14 11:31:20 EDT 2017: ThreadId 26
Thu Sep 14 11:31:25 EDT 2017: ThreadId 28
Thu Sep 14 11:31:30 EDT 2017: ThreadId 30
콘솔 출력은 컨트롤러가 5 초마다 호출됨을 나타냅니다. 하지만 2 초마다 요청을 보냅니다.
동시에 여러 수신 요청을 처리 할 수 있습니까? (2 초마다 콘솔 출력을보아야합니다)
최신 정보:
다른 브라우저에서 요청을 보내면 완벽하게 작동합니다. 세션을 공유하는 동일한 브라우저 / 응용 프로그램에서 테스트하면 문제점이 나옵니다.
동일한 세션의 동시 요청을 동시에 수용 할 수 있습니까?
감사!
해결법
-
==============================
1.기본적으로 스프링 부트 웹 애플리케이션은 멀티 스레드이며 여러 요청을 동시에 처리합니다.
기본적으로 스프링 부트 웹 애플리케이션은 멀티 스레드이며 여러 요청을 동시에 처리합니다.
브라우저 별 특징 일 수 있습니다. Windows 10에서 Chrome과 Firefox는 IE, Edge, & curl이 아닌 여러 요청을 동일한 URL에 대기시키는 것처럼 보입니다.
-
==============================
2.스프링 빈은 기본적으로 싱글 톤 빈이다. 싱글 톤은 컨테이너 당 하나의 객체 인스턴스를 의미합니다. 그래서 실제로 하나의 컨테이너에 DummyController 인스턴스가 하나 있습니다. 첫 번째 요청이 도착하고 Thread가 5 초 동안 잠자기 상태가됩니다. 깨어나면 실행이 완료되고 객체가 해제되고 두 번째 요청에 의해 선택됩니다. REST 컨트롤러가 다중 스레드인지 확인하십시오.
스프링 빈은 기본적으로 싱글 톤 빈이다. 싱글 톤은 컨테이너 당 하나의 객체 인스턴스를 의미합니다. 그래서 실제로 하나의 컨테이너에 DummyController 인스턴스가 하나 있습니다. 첫 번째 요청이 도착하고 Thread가 5 초 동안 잠자기 상태가됩니다. 깨어나면 실행이 완료되고 객체가 해제되고 두 번째 요청에 의해 선택됩니다. REST 컨트롤러가 다중 스레드인지 확인하십시오.
from https://stackoverflow.com/questions/46223363/spring-boot-handle-multiple-requests-concurrently by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 리바운드 라이브러리를 사용하여 Facebook Messenger 채팅 헤드와 동일한 ImageView에 자연스러운 끌기 효과 추가 (0) | 2019.01.15 |
---|---|
[SPRING] 스프링 MVC 애플리케이션에서 Null EntityManager 수정? (0) | 2019.01.15 |
[SPRING] 서버 측에서 스프링 프레임 워크로 안드로이드에 Stomp 클라이언트 설정 (0) | 2019.01.15 |
[SPRING] @JsonView와 Spring MVC 사용하기 (0) | 2019.01.15 |
[SPRING] Spring Boot - ResourceLoader를 사용하여 텍스트 파일 읽기 (0) | 2019.01.15 |