데브원영
검색
프로그래밍언어
쿠버네티스
오픈소스
빅데이터
DevOps
세미나
일상이야기
여행이야기
개발이야기/servlet container
서블릿 컨테이너을 위한 웹 애플리케이션 서버와 HTTP프로토콜의 이해
AndersonChoi
2017. 7. 26. 21:25
서블릿 컨테이너에서의 WAS와 HTTP
웹 애플리케이션 서버의 역할
웹 프로그램 : HTTP프로토콜로 통신하는 네트워크 프로그램의 일종
웹 애플리케이션 서버 : 클라이언트와 서버간의 소켓통신에 필요한 TCP/IP 연결 관리와 HTTP 프로토콜 해석 등의 네트워크 기반 작업을 추상화해 일종의 실행환경을 제공
원래는 Java EE 명세를 만족시키는 Java 구현체를 의미하짐나, 최근에는 개념이 일반화되면서 자바 이외의 프로그래밍 언어로 작성한 서버도 웹 애플리케이션 서버라고 부름
서블릿 컨테이너
여러 경량 프레임 워크(ex. struts, Spring 등)는 Java EE 정의 중
웹 애플리케이션 기술(JSP, 서블릿, Javaserver Faces, JSTL 등)
위에서 동작한다. 이 때
웹 애플리케이션 기술에 대한 구현체를 서블릿 컨테이너
라고 부르는 것
대표적인 서블릿 컨테이너 : Apache Tomcat, Jetty, Grizzly 등
Apache Tomcat : 오랫동안 서블릿 기술명세에 대한 참조 구현체였으며, 가장 잘 알려진 오픈 소스 계열의 서블릿 컨테이너
Jetty : 실험적 시도를 과감하게 도입하는 서블릿
Grizzly : 아파치 톰캣이 가진 Java EE 참조구현체의 역할을 새로 맡은 Glassfish.java.net의 서블릿 프레임 워크
서블릿 컨테이너 주요목표 :
서블릿을 동작시키는 것
HTTP프로토콜
웹서비스 : HTTP프로토콜로 메시지를 전송하는 시스템
ex.클라이언트가 보낸 메시지는 HTTP 프로토콜에 실려 서블릿 컨테이너에 전송됨. 전소된 메시지를 서버측에서 재구성하려면
서블릿컨
테이너는 반드시 HTTP 프로토콜 해석 기계를 구현
해야함.
HTTP 프로토콜
특징 : HTTP 프로토콜은 메시지의 끝이 어디인지 파악하는게 중요.
HTTP 프로토콜 규약
1991년 당시 정의된 초기 HTTP프로토콜 규약 :
https://www.w3.org/Protocols/HTTP/AsImplemented.html
현재의 HTTP 프로토콜 규약 :
https://tools.ietf.org/html/rfc2616
HTTP(Hypertext Transfer Protocol)은 말 그대로 하이퍼링크가 포함된 문서를 전송하기 위한 규약에서 시작됨
초기에는
HTTP에서 메시지의 끝을 행 구분자인 조합(CRLF)이라고 불리는 \r\n
을 써서 구분.
단순 문자열 전송이상의 기능이 요구되면서 HTTP/1.0이 추가로 정의됨.
메시지 헤더의 Content-Length
라는 헤더 값이 지정된 경우, 해당 크기만큼 메시지 바디가 따라나온다는 의미로 쓰임
ex. Content-Length가 정의되어 있으면, 서버에서는 빈 메시지 헤더를 읽은 다음부터 Content-Length만큼 더 읽은 후 메시지를 완성
만약
HTTP 메시지 크기를 미리 알수 없는 경우
라면?
ex. 외부 DBMS의 데이터를 HTTP body에 지정하는 경우 등 동적으로 결과가 변하는 경우
HTTP 바디에 출력될 내용을 메모리나 파일로 직접 써봐야만 실재 크기를 알 수 있음. HTTP body를 모두 만들어 보내면 명백한 서버 리소스 낭비
해결책 :
전송 버퍼를 사용해 HTTP 바디를 생성하는 도중 버퍼의 크기가 다 차면 해당 내용을 클라이언트로 부분 전송한 이후 다시 버퍼를 재활용
반응형
공유하기
게시글 관리
데브원영
저작자표시
비영리
변경금지
(새창열림)
'
개발이야기
>
servlet container
' 카테고리의 다른 글
[linux] netstat 명령어 설명 및 예제
(0)
2019.03.08
서블릿의 이해
(0)
2017.07.26
티스토리툴바
데브원영
구독하기