본문 바로가기

JAVA/- Spring

소켓 통신, 아파치, 톰켓, 서블릿

톰켓이란?

웹서버와 구분해야 합니다. 소켓통신은 운영체제에 있는 기능을 가지고 통신하는 것입니다. 운영체제의 기능을 쓸 때 시스템 콜이라고 하죠.

웹서버는 서버에 데이터가 필요한 사람이ip주소와 포트번호를 가지고 URL을 만들고 request합니다. URL은 위치입니다. 웹서버가 response하면 필요한 사람request할 때 준 주소에 데이터를 보내줍니다.

웹서버가 이고 사용자들이 이 됩니다. 이 요칭하지 않으면 데이터를 줄 방법이 없습니다. 소켓 통신을 하면 한번 연결이 되면 지속되기 때문에 을의 주소를 가지고 있습니다.

http 통신은 단순히 응답만 해줍니다. static 자원이라고도 하죠 html만 주고받으려고 만들었으니 목적에 맞습니다.

웹 서버는 아파치(apache)를 많이 씁니다. 아파치는 java를 이해하지 못합니다. 그래서 'java 자원 줘' 요청이 들어오면 옆에 있는 톰켓에게 권한을 넘깁니다. 그러면 톰켓은 폴더안에 모든 java코드를 컴파일 하고 컴파일이 끝나면 .html에 덮어 씌웁니다. 즉, java코드를 html로 만들어서 아파치에게 보냅니다.

서블릿 컨테이너

image

서블릿 컨테이너(톰켓)은 요청을 받는 역할입니다.

그런데 요청이 처음이냐 아니냐에 따라 나뉘네요.

웹서버에서 정적인 요청(html, css, png)이 들어오면 아파치가 일하고 아니면 톰켓이 일한다고 했습니다.

스프링은 URL로 자원을 접근할 수 없고 URI로 식별자 접근을 해야 합니다. 무조건 자바를 거칩니다. 즉, 톰켓이 사용됩니다.

ex) http://naver.com/a.png 이게 uri이고

http://naver.com/picture/a 이게 url 입니다. 이렇게 요청하면 자원을 요청하는 것이 아니라 톰켓이 동작될 수 있 합니다. 톰켓은 정적인것은 안받으니깐요.

서블릿: 자바코드로 웹을 만들 수 있는 것
서블릿 컨테이너: 자바코드로 웹을 할 수 있는 것을 모아둔것

request가 들어오면 스레드 생성 -> 서블릿 객체 생성을 합니다. 언제까지? 서버에서 정해놓은 스레드 숫자가 다할 때 까지. 스레드가 꽉 찼는데 들어오려면 대기를 해야합니다. 그리고 끝난 스래드를 물려받습니다. 스래드를 다 사용하고 버리지 않고 재사용합니다.

최종적으로 만들어 지는게 HttpServletRequest,HttpServletResponse 입니다. 이 객체는 톰켓이 가지고 있습니다.

728x90