Skip to content

Latest commit

ย 

History

History
60 lines (39 loc) ยท 3.03 KB

ServletContainer.md

File metadata and controls

60 lines (39 loc) ยท 3.03 KB

Servlet Container

์„œ๋ธ”๋ฆฟ๋“ค์˜ ์ƒ์„ฑ, ์‹คํ–‰, ํŒŒ๊ดด๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.

์„œ๋ธ”๋ฆฟ๋“ค์„ ์œ„ํ•œ ์ƒ์ž(Container)์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„์— ๋งŒ๋“ค์–ด์ง„ ์„œ๋ธ”๋ฆฟ์ด ์Šค์Šค๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, 
์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•œ๋ฐ, ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์„œ๋ธ”๋ฆฟ์„ '์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์„œ'๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค๋ฉด, 
์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ทธ ๋ช…์„ธ์„œ๋ฅผ ๋ณด๊ณ  ๊ฐœ๋ฐœํ•˜๋Š” '๊ฐœ๋ฐœ์ž'์ž…๋‹ˆ๋‹ค.

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” Clinet์˜ Request๋ฅผ ๋ฐ›์•„์ฃผ๊ณ  Responseํ•  ์ˆ˜ ์žˆ๊ฒŒ, 
์›น ์„œ๋ฒ„์™€ ์†Œ์ผ“์„ ๋งŒ๋“ค์–ด ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.



์—ญํ• 

์›น์„œ๋ฒ„์™€์˜ ํ†ต์‹  ์ง€์›

  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ๊ณผ ์›น์„œ๋ฒ„๊ฐ€ ์†์‰ฝ๊ฒŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์–ด, ์†Œ์ผ“์„ ๋งŒ๋“ค๊ณ  listen, accept ๋“ฑ์„ API๋กœ ์ œ๊ณตํ•˜์—ฌ ๋ณต์žกํ•œ ๊ณผ์ •์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

์„œ๋ธ”๋ฆฟ ์ƒ๋ช…์ฃผ๊ธฐ(Life Cycle) ๊ด€๋ฆฌ

  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ์˜ ํƒ„์ƒ๊ณผ ์ฃฝ์Œ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
    • ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šคํ™”
    • ์ดˆ๊ธฐํ™” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœ
    • ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ ์ ˆํ•œ ์„œ๋ธ”๋ฆฟ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋ธ”๋ฆฟ ์†Œ๋ฉธ ์‹œ Garbage Collection(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)์„ ์ง„ํ–‰

๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ์ง€์› ๋ฐ ๊ด€๋ฆฌ

  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์š”์ฒญ์ด ์˜ฌ ๋•Œ ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ž๋ฐ” ์“ฐ๋ ˆ๋“œ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑ
  • HTTP ์„œ๋น„์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜๋ฉด, ์“ฐ๋ ˆ๋“œ๋Š” ์ž๋™์œผ๋กœ ์†Œ๋ฉธ
  • ์›๋ž˜๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜์ง€๋งŒ ์„œ๋ฒ„๊ฐ€ ๋‹ค์ค‘ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑ ๋ฐ ์šด์˜ํ•ด์ฃผ๋‹ˆ ์“ฐ๋ ˆ๋“œ์˜ ์•ˆ์ •์„ฑ์— ๋Œ€ํ•ด์„œ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

์„ ์–ธ์ ์ธ ๋ณด์•ˆ ๊ด€๋ฆฌ

  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๋ณด์•ˆ์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ์„œ๋ธ”๋ฆฟ ๋˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค์— ๊ตฌํ˜„ํ•ด ๋†“์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณด์•ˆ๊ด€๋ฆฌ๋Š” XML ๋ฐฐํฌ ์„œ์ˆ ์ž์— ๋‹ค๊ฐ€ ๊ธฐ๋กํ•˜๋ฏ€๋กœ, ๋ณด์•ˆ์— ๋Œ€ํ•ด ์ˆ˜์ •ํ•  ์ผ์ด ์ƒ๊ฒจ๋„ ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค์‹œ ์ปดํŒŒ์ผ ํ•˜์ง€ ์•Š์•„๋„ ๋ณด์•ˆ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.



Servelet์˜ HTTP์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ

  1. ์›น์„œ๋ฒ„๊ฐ€ HTTP ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค
  2. ์›น์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์„œ๋ธ”๋ฆฟ์ด ์ปจํ…Œ์ด๋„ˆ์— ์—†๋‹ค๋ฉด, ์„œ๋ธ”๋ฆฟ์„ ๋™์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋กœ๋“œํ•œ๋‹ค
  4. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ์˜ init() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ์„œ๋ธ”๋ฆฟ์ด ์ดˆ๊ธฐํ™”๋œ๋‹ค: ์„œ๋ธ”๋ฆฟ์ด ์ฒ˜์Œ ๋กœ๋“œ๋ฌ์„ ๋•Œ ํ•œ๋ฒˆ๋งŒ ํ˜ธ์ถœ
  5. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ์˜ service() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.(์š”์ฒญ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์‘๋‹ต์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค)์„œ๋ธ”๋ฆฟ์€ ์ปจํ…Œ์ด๋„ˆ ์ฃผ์†Œ์— ๋‚จ์•„์žˆ๊ณ , ๋‹ค๋ฅธ HTTP ์š”์ฒญ๋“ค์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ์›น์„œ๋ฒ„๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒฐ๊ณผ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๋ฐ˜ํ™˜ํ•œ๋‹ค.