Spring Controller 관련 다중 콜 질문

776 views
Skip to first unread message

심준보

unread,
Oct 28, 2015, 12:49:01 AM10/28/15
to Korea Spring User Group Q&A
안녕하십니까 Restful API 기반으로 콜을 받는 서버를 만들려고 하는데요.

전 여태까지 당연히 Controller가 다중콜을 한꺼번에 처리한다고 생각했었습니다.

그런데 테스트 도중

Controller 에 A() 라는 5초가 걸리는 메서드를 하나 만들고 동시에 두번 호출을 하였습니다.

첫번째 콜이 5초후에 종료 되고, 두번째 콜이 첫번째 콜 종료 후에 실행이 되더라고요.

혹시 제가 설정을 잘못한 것인가요? 아니면 원래 Controller 개념이 그런것인건가요.

그리고 Controller 에서 다중콜을 처리할 수 있는기 궁금합니다.


이수홍

unread,
Oct 28, 2015, 12:55:20 AM10/28/15
to ks...@googlegroups.com
다중 요청을 받지 못하는 웹의 컨트롤러로는 웹서버로서의 의미가 없겠죠 

이야기 하신 이야기 같은 경우는 내부 다른곳 호출 하는 곳이 그런 형태로 처리되는 경우
(예를 들면 DB에서 높은 격리성으로 트랜잭션을 진행하는 경우 또는 
싱크로나이즈한 서비스를 처리하는 경우 등 에서는 그런 형태로 처리 하는 경우)

컨트롤에서 실행하는 로직이 어떤 형태로 처리 되는지 한번 살펴보는 것을 추천합니다.

2015. 10. 28., 오후 1:49, 심준보 <ai...@igaworks.com> 작성:

--
이 메일은 Google 그룹스 'Korea Spring User Group Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
http://groups.google.com/group/ksug에서 이 그룹을 방문하세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ksug/5765846f-89f7-4fbf-b668-8a23006f3094%40googlegroups.com을(를) 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

심준보

unread,
Oct 28, 2015, 3:05:02 AM10/28/15
to Korea Spring User Group Q&A

@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home2! The client locale is {}.", locale);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
}

의 형태로 콜을 받아오는데, 혹시 Spring Frameworks 에서 다중콜을 한꺼번에 받기 위해서 어떤 설정을 해야될까요?


2015년 10월 28일 수요일 오후 1시 55분 20초 UTC+9, 코바(이수홍) 님의 말:

이현호

unread,
Oct 28, 2015, 4:17:25 AM10/28/15
to ks...@googlegroups.com
정상적으로 테스트 되는 메소드인거 같은데요 설정상 뭔가 문제가 있는거 같네요

2015년 10월 28일 오후 4:05, 심준보 <ai...@igaworks.com>님이 작성:

전형민

unread,
Oct 28, 2015, 4:19:50 AM10/28/15
to ks...@googlegroups.com
로거를 사용하지 마시고 System.out.println  사용해 보지죠..

이전에 누가 질문하신 case가 있었는데.

Logger 가 Wite를 비동기로 처리해서 로그가 늦게 나왔던가.
아님... 로거가 늦었던가 했던 기억이 있네요.^^ 

성공하시길...

------------------------------------
당신의 과거가 당신을 만든다.

2015년 10월 28일 오후 5:17, 이현호 <rune...@gmail.com>님이 작성:

김경석

unread,
Oct 28, 2015, 4:55:38 AM10/28/15
to ks...@googlegroups.com
유사한 사례가 있었는데요. 

ajax 비동기 호출을 이용해서 병렬처리를 시도했는데 순차적으로 처리되는 현상이 있었습니다. 

제 경우는 설정 문제였는데요. AnnotationMethodHandlerAdapter를 사용하고 있었는데 synchronizeOnSession 속성이 true로 되어 있더군요. 이 속성을 false로 바꿔서 해결한 적이 있었습니다.

건투를 빕니다. ^^

2015년 10월 28일 오후 5:19, 전형민 <supe...@wellsoft.co.kr>님이 작성:

송준현

unread,
Oct 28, 2015, 6:22:35 AM10/28/15
to Korea Spring User Group Q&A
디버거로 확인하시는 경우시면

디버거가 요청 쓰레드를 하나만 만들 수도 있어요


2015년 10월 28일 수요일 오후 1시 49분 1초 UTC+9, 심준보 님의 말:

심준보

unread,
Oct 29, 2015, 3:32:54 AM10/29/15
to Korea Spring User Group Q&A
답변 달아 주신 모든 분들 감사합니다!

좀 더 삽질을 해본 후, 추가 질문 드리겠습니다.


2015년 10월 28일 수요일 오후 1시 49분 1초 UTC+9, 심준보 님의 말:
안녕하십니까 Restful API 기반으로 콜을 받는 서버를 만들려고 하는데요.
Reply all
Reply to author
Forward
0 new messages