λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

이클립슀(Eclipse)에 μ•„νŒŒμΉ˜ν†°μΊ£(Tomcat) μ—°λ™ν•˜κΈ°

by 5566 2023. 8. 15.

1. μ΄ν΄λ¦½μŠ€μ™€ μ•„νŒŒμΉ˜ ν†°μΊ£ μ†Œκ°œ

μ΄ν΄λ¦½μŠ€λŠ” μžλ°” 기반의 μ˜€ν”ˆ μ†ŒμŠ€ 톡합 개발 ν™˜κ²½(IDE)μž…λ‹ˆλ‹€. μ΄ν΄λ¦½μŠ€λŠ” κ°•λ ₯ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜λ©°, μœ μ—°ν•˜κ³  μ‚¬μš©μž μΉœν™”μ μΈ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 가지고 μžˆμ–΄ κ°œλ°œμžλ“€μ—κ²Œ λ§Žμ€ 인기λ₯Ό μ–»κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ•„νŒŒμΉ˜ 톰캣은 μžλ°” μ„œλΈ”λ¦Ώ 및 JSPλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μž…λ‹ˆλ‹€. 이 μ›Ή μ„œλ²„λŠ” λ¬΄λ£Œμ΄λ©΄μ„œλ„ 가볍고 λ›°μ–΄λ‚œ μ„±λŠ₯을 μ œκ³΅ν•˜μ—¬ λ§Žμ€ κ°œλ°œμžλ“€μ΄ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ΄ν΄λ¦½μŠ€μ™€ μ•„νŒŒμΉ˜ 톰캣은 μ„œλ‘œ ν˜Έν™˜λ˜λŠ” νˆ΄λ‘œμ„œ, 이클립슀λ₯Ό 톡해 μ•„νŒŒμΉ˜ 톰캣을 μ‰½κ²Œ κ΄€λ¦¬ν•˜κ³  μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜κ³  μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 효율적인 개발 ν™˜κ²½μ„ ꡬ좕할 수 있으며, μ‹€μ‹œκ°„ 디버깅 및 둜그 확인 λ“±μ˜ κΈ°λŠ₯을 톡해 개발 과정을 보닀 μ›ν™œν•˜κ²Œ 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.

νŽΈλ¦¬ν•˜κ³  κ°•λ ₯ν•œ μ΄ν΄λ¦½μŠ€μ™€ 가볍고 μ„±λŠ₯이 μš°μˆ˜ν•œ μ•„νŒŒμΉ˜ 톰캣을 ν•¨κ»˜ μ‚¬μš©ν•¨μœΌλ‘œμ¨ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발의 νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ μž₯μ—μ„œλŠ” μ΄ν΄λ¦½μŠ€μ— μ•„νŒŒμΉ˜ 톰캣을 μ„€μΉ˜ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

2. μ΄ν΄λ¦½μŠ€μ— μ•„νŒŒμΉ˜ ν†°μΊ£ μ„€μΉ˜ν•˜κΈ°

μ΄ν΄λ¦½μŠ€μ— μ•„νŒŒμΉ˜ 톰캣을 μ„€μΉ˜ν•˜λ €λ©΄ λ‹€μŒμ˜ 단계λ₯Ό λ”°λ₯΄λ©΄ λ©λ‹ˆλ‹€:

  1. 이클립슀λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  2. 이클립슀의 λ©”λ‰΄μ—μ„œ "Help"λ₯Ό μ„ νƒν•œ ν›„ "Eclipse Marketplace"λ₯Ό ν΄λ¦­ν•©λ‹ˆλ‹€.
  3. Eclipse Marketplace μ°½μ—μ„œ "Tomcat"을 κ²€μƒ‰ν•˜κ³ , λ‚˜μ˜¨ 검색 κ²°κ³Όμ—μ„œ "Eclipse Tomcat Plugin"을 μ„ νƒν•©λ‹ˆλ‹€.
  4. "Go to the Marketplace" λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ ν•΄λ‹Ή ν”ŒλŸ¬κ·ΈμΈμ˜ μ„ΈλΆ€ 정보 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
  5. "Install" λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ ν”ŒλŸ¬κ·ΈμΈμ„ μ„€μΉ˜ν•©λ‹ˆλ‹€.
  6. μ„€μΉ˜κ°€ μ™„λ£Œλ˜λ©΄ 이클립슀λ₯Ό μž¬μ‹œμž‘ν•©λ‹ˆλ‹€.

이제 μ΄ν΄λ¦½μŠ€μ— μ•„νŒŒμΉ˜ 톰캣이 μ„€μΉ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ λ‹¨κ³„μ—μ„œλŠ” μ΄ν΄λ¦½μŠ€μ™€ μ•„νŒŒμΉ˜ 톰캣을 μ—°λ™ν•˜μ—¬ μ„€μ •ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

3. μ΄ν΄λ¦½μŠ€μ™€ μ•„νŒŒμΉ˜ ν†°μΊ£ 연동 μ„€μ •ν•˜κΈ°

μ΄ν΄λ¦½μŠ€μ™€ μ•„νŒŒμΉ˜ 톰캣을 μ—°λ™ν•˜μ—¬ μ‚¬μš©ν•˜λ €λ©΄ λ‹€μŒμ˜ 단계λ₯Ό λ”°λ₯΄λ©΄ λ©λ‹ˆλ‹€:

  1. 이클립슀λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  2. 이클립슀의 λ©”λ‰΄μ—μ„œ "Window"λ₯Ό μ„ νƒν•œ ν›„ "Show View"λ₯Ό ν΄λ¦­ν•©λ‹ˆλ‹€.
  3. "Servers"λ₯Ό μ„ νƒν•˜μ—¬ "Servers" 창을 μ—½λ‹ˆλ‹€.
  4. "Servers" μ°½μ—μ„œ 마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ ν΄λ¦­ν•˜κ³  "New"λ₯Ό μ„ νƒν•˜μ—¬ μƒˆλ‘œμš΄ μ„œλ²„λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  5. "Server" μ°½μ—μ„œ "Apache" 폴더λ₯Ό μ—΄κ³  "Tomcat"을 μ„ νƒν•©λ‹ˆλ‹€.
  6. "Tomcat installation directory"에 μ•„νŒŒμΉ˜ 톰캣이 μ„€μΉ˜λœ 디렉토리 경둜λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.
  7. ν•„μš”μ— 따라 "JRE" 섀정이 ν•„μš”ν•˜λ‹€λ©΄ "JRE" 탭을 ν΄λ¦­ν•˜μ—¬ μ„€μ •ν•©λ‹ˆλ‹€.
  8. "Finish" λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ 섀정을 μ™„λ£Œν•©λ‹ˆλ‹€.
  9. 이제 "Servers" μ°½μ—μ„œ μƒμ„±ν•œ μ„œλ²„λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ ν΄λ¦­ν•˜κ³  "Start"λ₯Ό μ„ νƒν•˜μ—¬ μ•„νŒŒμΉ˜ 톰캣을 μ‹€ν–‰ν•©λ‹ˆλ‹€.
  10. μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜κ³  ν…ŒμŠ€νŠΈν•˜λ €λ©΄ μ΄ν΄λ¦½μŠ€μ—μ„œ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜κ³  μ„œλ²„μ— μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ "Servers" μ°½μ—μ„œ 마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ ν΄λ¦­ν•˜κ³  "Add and Remove"λ₯Ό μ„ νƒν•©λ‹ˆλ‹€. μƒμ„±ν•œ ν”„λ‘œμ νŠΈλ₯Ό μ„ νƒν•˜μ—¬ μ„œλ²„μ— μΆ”κ°€ν•©λ‹ˆλ‹€.

이제 μ΄ν΄λ¦½μŠ€μ™€ μ•„νŒŒμΉ˜ 톰캣이 μ—°λ™λ˜μ–΄ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 개발 및 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ 변경사항을 μ €μž₯ν•˜κ³  μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν…ŒμŠ€νŠΈν•˜κΈ° μœ„ν•΄ μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜κ³ , λΈŒλΌμš°μ €μ—μ„œ ν•΄λ‹Ή μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—΄μ–΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

4. μ΄ν΄λ¦½μŠ€μ—μ„œ μ•„νŒŒμΉ˜ 톰캣을 μ΄μš©ν•œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œν•˜κΈ°

μ΄ν΄λ¦½μŠ€μ—μ„œ μ•„νŒŒμΉ˜ 톰캣을 μ΄μš©ν•˜μ—¬ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. 이클립슀λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  2. μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. "File" λ©”λ‰΄μ—μ„œ "New"λ₯Ό μ„ νƒν•œ ν›„ "Project"λ₯Ό ν΄λ¦­ν•©λ‹ˆλ‹€. "New Project" λŒ€ν™”μƒμžμ—μ„œ "Dynamic Web Project"λ₯Ό μ„ νƒν•˜κ³  ν”„λ‘œμ νŠΈμ˜ 이름과 μœ„μΉ˜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
  3. ν”„λ‘œμ νŠΈκ°€ μƒμ„±λ˜λ©΄ "src" ν΄λ”μ—μ„œ 마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ ν΄λ¦­ν•˜κ³  "New"λ₯Ό μ„ νƒν•œ ν›„ "Servlet"을 ν΄λ¦­ν•©λ‹ˆλ‹€. "New Servlet" λŒ€ν™”μƒμžμ—μ„œ μ„œλΈ”λ¦Ώμ˜ 이름과 νŒ¨ν‚€μ§€λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
  4. μƒμ„±ν•œ μ„œλΈ”λ¦Ώ ν΄λž˜μŠ€λŠ” doGet λ˜λŠ” doPost λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ“œν•˜μ—¬ μ›Ή μš”μ²­μ„ μ²˜λ¦¬ν•˜κ²Œ λ©λ‹ˆλ‹€.
  5. μ›Ή νŽ˜μ΄μ§€λ₯Ό κ°œλ°œν•˜κΈ° μœ„ν•΄ "WebContent" ν΄λ”μ—μ„œ 마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ ν΄λ¦­ν•˜κ³  "New"λ₯Ό μ„ νƒν•œ ν›„ "HTML File"을 ν΄λ¦­ν•©λ‹ˆλ‹€. "New HTML File" λŒ€ν™”μƒμžμ—μ„œ HTML 파일의 이름을 μ§€μ •ν•©λ‹ˆλ‹€.
  6. μ›Ή νŽ˜μ΄μ§€λ₯Ό λ””μžμΈν•˜κ³  HTML, CSS 및 JavaScript μ½”λ“œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.
  7. μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 배치 μž‘μ—…μ„ μœ„ν•΄ "WebContent" ν΄λ”μ—μ„œ web.xml νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€. 이 νŒŒμΌμ€ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 섀정을 μ§€μ •ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
  8. μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ "Servers" μ°½μ—μ„œ μƒμ„±ν•œ μ„œλ²„λ₯Ό 마우슀 였λ₯Έμͺ½ λ²„νŠΌμœΌλ‘œ ν΄λ¦­ν•˜κ³  "Start"λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  9. μ›Ή λΈŒλΌμš°μ €λ₯Ό μ—΄κ³  http://localhost:8080/ν”„λ‘œμ νŠΈμ΄λ¦„μœΌλ‘œ μ ‘μ†ν•˜μ—¬ κ°œλ°œν•œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€.

이제 μ΄ν΄λ¦½μŠ€μ—μ„œ μ•„νŒŒμΉ˜ 톰캣을 μ΄μš©ν•˜μ—¬ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜κ³  ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ„œλΈ”λ¦Ώκ³Ό HTML νŒŒμΌμ„ μ‘°ν•©ν•˜μ—¬ 동적인 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  수 있으며, μ›Ή νŽ˜μ΄μ§€μ˜ λ””μžμΈκ³Ό κΈ°λŠ₯을 μ§€μ†μ μœΌλ‘œ κ°œμ„ ν•˜λ©΄μ„œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ™„μ„±ν•΄ λ‚˜κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

5. μ•„νŒŒμΉ˜ ν†°μΊ£ 디버깅 및 둜그 ν™•μΈν•˜κΈ°

μ•„νŒŒμΉ˜ ν†°μΊ£μ—μ„œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λ‹€ 보면 디버깅과 둜그 확인이 ν•„μš”ν•  λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ λ‹€μŒκ³Ό 같은 방법을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

디버깅 μ„€μ •ν•˜κΈ°

  1. μ΄ν΄λ¦½μŠ€μ—μ„œ μ•„νŒŒμΉ˜ ν†°μΊ£ μ„œλ²„λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

  2. 이클립슀의 "Servers" μ°½μ—μ„œ μ‹€ν–‰ 쀑인 μ„œλ²„λ₯Ό 마우슀 였λ₯Έμͺ½ λ²„νŠΌμœΌλ‘œ ν΄λ¦­ν•˜κ³  "Properties"λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

  3. "Server" νƒ­μ—μ„œ "Enable JMX remote debugging" μ˜΅μ…˜μ„ ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

  4. "VM arguments"λž€μ— λ‹€μŒκ³Ό 같은 섀정을 μΆ”κ°€ν•©λ‹ˆλ‹€:

    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

    μœ„ 섀정은 포트번호 8000을 톡해 디버거와 μ—°κ²°ν•  수 μžˆλ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€.

  5. "Apply" λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ 섀정을 μ €μž₯ν•©λ‹ˆλ‹€.

디버깅 μ‹€ν–‰ν•˜κΈ°

  1. 디버깅을 μœ„ν•΄ μ΄ν΄λ¦½μŠ€μ—μ„œ ν•΄λ‹Ή μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν”„λ‘œμ νŠΈλ₯Ό μ—½λ‹ˆλ‹€.
  2. 디버깅할 μ„œλΈ”λ¦Ώμ΄λ‚˜ JSP νŒŒμΌμ„ μ„ νƒν•˜κ³ , ν•΄λ‹Ή 파일의 브레이크 포인트λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. 브레이크 ν¬μΈνŠΈλŠ” ν•΄λ‹Ή 파일의 νŠΉμ • 라인에 쀑단점을 μ„€μ •ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.
  3. μ›Ή λΈŒλΌμš°μ €μ—μ„œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.
  4. 이클립슀의 디버깅 νˆ΄λ°”μ—μ„œ "Debug" λ²„νŠΌμ„ ν΄λ¦­ν•©λ‹ˆλ‹€.
  5. 이제 디버거가 μ‹€ν–‰λ˜κ³ , μ„€μ •ν•œ 브레이크 ν¬μΈνŠΈμ—μ„œ μ€‘λ‹¨λ©λ‹ˆλ‹€. μ½”λ“œλ₯Ό ν•œ 쀄씩 μ‹€ν–‰ν•˜κ³  λ³€μˆ˜μ˜ 값을 ν™•μΈν•˜λ©° 디버깅을 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.

둜그 ν™•μΈν•˜κΈ°

  1. μ•„νŒŒμΉ˜ 톰캣은 둜그 νŒŒμΌμ„ μƒμ„±ν•˜μ—¬ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‹€ν–‰ κ³Όμ •κ³Ό μ—λŸ¬λ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€. 둜그 νŒŒμΌμ€ 주둜 logs 폴더에 μ €μž₯λ©λ‹ˆλ‹€.
  2. μ΄ν΄λ¦½μŠ€μ—μ„œ μ•„νŒŒμΉ˜ ν†°μΊ£ μ„œλ²„λ₯Ό μ‹€ν–‰ν•œ ν›„ "Servers" μ°½μ—μ„œ ν•΄λ‹Ή μ„œλ²„λ₯Ό 마우슀 였λ₯Έμͺ½ λ²„νŠΌμœΌλ‘œ ν΄λ¦­ν•˜κ³  "Properties"λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  3. "Logs" νƒ­μ—μ„œ ν†°μΊ£μ˜ 둜그 파일 경둜λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  4. ν•΄λ‹Ή κ²½λ‘œμ— μ ‘μ†ν•˜μ—¬ μ›ν•˜λŠ” 둜그 νŒŒμΌμ„ μ—΄μ–΄ λ‚΄μš©μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

디버깅과 둜그 확인을 톡해 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 였λ₯˜λ₯Ό μΆ”μ ν•˜κ³  ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 개발 κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” 문제λ₯Ό μ‹ μ†ν•˜κ²Œ ν•΄κ²°ν•˜κ³  μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ•ˆμ •μ„±μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€