티스토리 뷰
외장 서버 VS 내장 서버
전통적인 방식(외장 서버)
- 과거에 자바로 웹 애플리케이션을 개발할 때는 먼저 서버에 톰캣 같은 WAS(웹 애플리케이션 서버)를 설치했다.
- WAS에서 동작하도록 서블릿 스펙에 맞추어 코드를 작성하고, WAR 형식으로 빌드해서 war 파일을 만든 뒤, war 파일을 WAS에 전달해서 배포하는 방식으로 전체 개발 주기가 동작했다.
- WAS 기반 위에서 개발하고 실행해야 하기 때문에 IDE 같은 개발 환경에서도 WAS와 연동해서 실행되도록 복잡한 추가 설정이 필요하다.
최근 방식(내장 서버)
- 최근에는 스프링 부트가 내장 톰캣을 포함하고 있다.
- 애플리케이션 코드 안에 톰캣 같은 WAS가 라이브러리로 내장되어 있다는 뜻이다.
- 개발자는 코드를 작성하고 JAR로 빌드한 다음에 해당 JAR를 원하는 위치에서 실행하기만 하면 WAS도 함께 실행된다.
- main() 메서드만 실행하면 되고, WAS 설치나 IDE 같은 개발 환경에서 WAS 와 연동하는 복잡한 일은 수행하지 않아도 된다.
JAR (Java Archive)
자바는 여러 클래스와 리소스를 묶어서 JAR
(Java Archive)라고 하는 압축 파일을 만들 수 있는데, 이 파일은 JVM 위에서 직접 실행되거나 또는 다른 곳에서 사용하는 라이브러리로 제공된다.
직접 실행하는 경우 main()
메서드가 필요하고, MANIFEST.MF
파일에 실행할 메인 메서드가 있는 클래스를 지정해두어야 한다.
java -jar exam.jar
Jar는 쉽게 이야기해서 클래스와 관련 리소스를 압축한 단순한 파일이다. 필요한 경우 이 파일을 직접 실행할 수도 있고, 다른 곳에서 라이브러리로 사용할 수도 있다.
WAR (Web Application Archive)
WAR
(Web Application Archive)라는 이름에서 알 수 있듯 WAR 파일은 웹 애플리케이션 서버(WAS) 에 배포할 때 사용하는 파일이다. JAR 파일이 JVM 위에서 실행된다면, WAR는 웹 애플리케이션 서버 위에서 실행된다.
웹 애플리케이션 서버 위에서 실행되고, HTML 같은 정적 리소스와 클래스 파일을 모두 함께 포함하기 때문에 JAR와 비교해서 구조가 더 복잡하며, WAR 구조를 지켜야 한다.
WAR 구조
- WEB-INF
- classes: 실행 클래스 모음
- lib: 라이브러리 모음
- web.xml: 웹 서버 배칠 설정 파일(생략 가능)
WEB-INF
폴더 하위는 자바 클래스와 라이브러리, 그리고 설정 정보가 들어가는 곳이다.WEB-INF
를 제외한 나머지 영역은 HTML, CSS 같은 정적 리소스가 사용되는 영역이다.
Reference
'Spring' 카테고리의 다른 글
[Spring] build.gradle 라이브러리 관리 (0) | 2023.03.13 |
---|---|
[Spring] 스프링 부트 내장 톰캣 (0) | 2023.03.12 |
[Spring] 트랜잭션 전파 옵션 REQUIRES_NEW를 사용해서 문제를 해결해보자 (0) | 2022.11.23 |
[Spring] 스프링 트랜잭션 전파 옵션 REQUIRES_NEW에 대해 알아보자 (0) | 2022.11.22 |
[Spring] 프록시 내부 호출 문제점 (0) | 2022.10.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코테
- Refactoring
- 알고리즘
- kotlin
- 코틀린
- 북클럽
- 정렬
- 노마드
- MySQL
- 그리디
- 김영한
- 스프링 부트
- 데이터베이스
- spring boot
- 인프런
- 백준
- leetcode
- 노마드코더
- webflux
- mysql 8.0
- 문자열
- 구현
- Algorithm
- 파이썬
- 릿코드
- 리팩토링
- 자료구조
- Spring
- Real MySQL
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함