[이론] 함수호출방법 / WAS

오미희·2021년 12월 12일
0

이론

목록 보기
3/6

1. 함수호출방법

1-1. call by value(값에 의한 호출)
: 일반적인 함수 호출 형태로 메서드 호출 시 사용되는 인자의 메모리에 저장되어 있는 값을 복사하여 사용

  • 본래의 값은 변하지 않음
  • 함수 사용시마다 복사하므로 메모리 사용량 증가

1-2. call by reference(참조에 의한 호출)
: 메서드 호출 시 사용되는 인자의 메모리에 저장되어 있는 주소를 복사하여 사용. 즉 복사된 값이 아닌 주소를 통해 실제 값에 접근함.

  • 본래의 값 변화

함수호출방법

2. 와스( WAS : Web Application Server )

: 웹 응용 프로그램이 설치되어 작동하는 웹 어플리케이션 서버로 미들웨어의 일종이자. 시스테소프트웨어의 일종
ex) Tomcat / JBoss / Jeus / Web / Sphere

web server 
: 브라우저 사용자에게 HTTP 요청을 받아 HTML페이지를 반환하여주는 컴퓨터 프로그램.
L 정적인 컨텐츠(html,css,js 등)를 제공하는 서버.
ex) Apache Server, Nginx, IIS

was
: web server + web container
L web server가 요청한 동적컨텐츠에 대해 제공하는 역할/web server를 거치지 않고 
  직접 처리하는 것도 가능.
//was가 정적컨텐츠 처리까지 가능한 것은 맞지만 그럴 경우 was의 과부하를 유발하므로 
  web server를 앞에 두고 정적 컨텐츠 처리 후 동적 컨텐츠 요청에 대해서만 was가 
  담당하는 것이 더욱 효율적인 분산처리 가능
L db조회나 복작합 로직 처리가 필요한 동적인 컨텐츠를 제공하는 서버.
L web server를 포함하는 개념

2-1. WAS의 주요 기능
ㄱ. 프로그램 실행환경과 DB접속 기능 제공
ㄴ. 여러 개의 트랜잭션 관리 기능
ㄷ. 비즈니스 로직 수행

2-2 웹서비스 구조
ㄱ. Client -> Web Server -> DB
ㄴ. Client -> WAS -> DB
ㄷ. Client -> Web Server -> WAS -> DB
// ㄱ과 ㄴ의 경우 프로그램 과부하를 유발하고 작업의 효율성을 낮춤.

✔ Client -> Web Server -> WAS -> DB 동작과정
1. 웹 브라우저 클라이언트(즉 사용자)가 웹서버에 HTTP프로토콜을 통해 요청을 보냄
2. 웹서버는 정적인 컨텐츠 처리 후 동적컨텐츠 처리에 대하여 클라이언트의 요청을 WAS에 전달
3. WAS를 관련된 Serlet을 메모리에 올림
4. WAS는 web.xmll을 참조하여 해당 Servlet에 대한 쓰레드 생성(쓰레드 pool 이용)
5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달

5-1. 쓰레드는 Servlet의 service()메서드를 호출
5-2. service()메서드는 요청에 따라 doGet() 또는 doPost() 메서드를 호출
  1. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달
  2. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달
  3. Web Server에 응답후 생성되었던 쓰레드를 종료, HttpServletRequest와 HttpServletResponse 객체를 제거

서블릿 (= Servlet)
: 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램으로 
  클라이언트의 요청을 처리하고 그 결과를 반환.
  
서블릿 컨테이너(= Servlet Container)
: 서블릿을 관리해주는 컨테이너
    ex) tomcat : 클라이언트 요청에 의해 소켓으로 통해 웹서버와 통신하여 JSP와 
        Servlet이 작동하는 환경 제공
        
JSP
: java 코드가 들어간 html 코드 

쓰레드 (= thread)
: 프로그램 내에서 작업을 수행하는 주체 혹은 하나의 흐름

was?
servlet?

profile
안녕하세요

0개의 댓글