Common Gretty 와 Jetty 에 대하여

황제낙엽 2024.11.01 14:42 조회 수 : 115

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
extra_vars6  

최근 java project sample 들을 찾아서 실행할때 대부분 maven 과 gradle 로 빌드하고 실행하게 되어 있는데

실행할때 tomcat 과 같은 별도의 container server 를 설치하여 war 만 배포하고 실행하는게 아니라

gradle 에서 gretty 와 jetty 를 설정하여 was 가 구동되는 형태로 공유하고 있는걸 알게 되었다.

그래서 gradle 에 정의된 Gretty 와 Jetty 에 대해 phind 에게 물어보았다.

 

1. Gretty

GrettyGradle 플러그인으로, Gradle 프로젝트 내에서 Jetty 및 Tomcat 웹 서버를 쉽게 시작하고 관리할 수 있도록 설계되었습니다.

이를 통해 개발자들은 기존 Gradle 환경에서 별도의 서버 설정 없이도 웹 애플리케이션을 실행하고 테스트할 수 있습니다.

Gretty는 특히 서블릿 기반의 Java 웹 애플리케이션을 개발하는 동안 로컬 서버를 빠르게 실행하는 데 유용합니다.

주요 특징

  1. Jetty 및 Tomcat 지원:

    • Gretty는 Jetty와 Tomcat을 모두 지원하여, 개발자가 프로젝트 요구 사항에 맞는 서버를 선택하여 사용할 수 있습니다.
      두 서버에 대한 다양한 버전을 선택할 수도 있습니다.
  2. 핫스왑(Hot-swap) 기능:

    • Gretty는 코드 변경 시 서버를 재시작하지 않고도 변경 내용을 적용할 수 있는 핫스왑 기능을 지원하여 개발 효율성을 높입니다.
      코드 수정 후 바로 결과를 확인할 수 있어 빠른 개발 주기에 적합합니다.
  3. 멀티 모듈 지원:

    • Gretty는 멀티 모듈 프로젝트에서 각 모듈을 개별적으로 실행하거나 전체 애플리케이션을 하나로 결합하여 실행할 수 있는 기능을 지원합니다.
  4. 기본 Gradle 명령어와 통합:

    • Gretty는 Gradle의 표준 명령어(gradle appStart, gradle appStop, gradle appRestart)와 함께 동작하여 프로젝트 설정 및 관리를 간소화합니다.
  5. 다양한 구성 옵션:

    • Gretty는 다양한 구성 옵션을 제공하여 포트 설정, 컨텍스트 경로, SSL 인증서, 세션 설정 등을 사용자 지정할 수 있습니다.

기본 사용법

build.gradle 파일에 Gretty 플러그인을 추가하고 필요한 서버 옵션을 구성하면 됩니다. 예를 들어:

plugins {

    id 'org.gretty' version '3.0.5'

}

 

gretty {

    contextPath = '/'

    servletContainer = 'jetty9' // Jetty 9 사용

    httpPort = 8080

}

 

이제 Gradle 명령어를 통해 서버를 시작할 수 있으며, Gretty의 핫스왑 기능과 Gradle과의 통합으로 개발 속도를 높일 수 있습니다.

 

2. Jetty

Jetty는 Java 기반의 오픈 소스 웹 서버이자 서블릿 컨테이너로, 웹 애플리케이션을 위한 서버와 애플리케이션 컨테이너 역할을 합니다.
Eclipse Foundation이 관리하고 있으며, Eclipse Jetty 프로젝트라는 이름으로 유지되고 있습니다.
주로 RESTful 웹 서비스, 웹 애플리케이션, IoT 애플리케이션 등 다양한 웹 기술을 지원하기 때문에 개발자들에게 유용하게 사용됩니다.

주요 특징

  1. 경량화:

    • Jetty는 가벼운 서버로, 리소스가 적게 들고 빠르게 시작할 수 있어 임베디드 시스템과 마이크로서비스 아키텍처에 적합합니다.
  2. 임베디드 서버:

    • Jetty는 Java 애플리케이션에 내장할 수 있는 임베디드 서버 기능을 지원합니다.
      이로 인해 개발자는 애플리케이션 내에서 Jetty를 호출해 웹 애플리케이션을 쉽게 배포할 수 있습니다.
  3. 서블릿 컨테이너:

    • Jetty는 Java 서블릿과 JSP(JavaServer Pages)를 지원하는 표준 웹 컨테이너입니다.
      이를 통해 Java 기반의 다양한 웹 애플리케이션을 운영할 수 있습니다.
  4. 웹 소켓과 HTTP/2 지원:

    • Jetty는 최신 웹 프로토콜인 HTTP/2와 웹 소켓을 지원하여 실시간 통신을 요하는 애플리케이션에도 적합합니다.
  5. 유연한 확장성:

    • 플러그인과 설정이 매우 유연해서 다양한 웹 애플리케이션 환경에 쉽게 맞출 수 있으며, Spring Boot와의 호환성도 좋아 마이크로서비스 아키텍처에서 활용도가 높습니다.
  6. 안정성과 커뮤니티:

    • 오랫동안 사용되어온 안정성 높은 서버로, 방대한 사용자 커뮤니티와 문서가 있어 학습 자료와 해결 방안을 찾기 쉽습니다.

사용 사례

Jetty는 높은 가용성이 필요한 환경에서 주로 사용되며, IoT, 금융 서비스, 클라우드 플랫폼 등의 애플리케이션에서 널리 사용됩니다.
예를 들어 Spring Boot는 Jetty를 선택적인 임베디드 서버로 제공해 개발자들이 애플리케이션 내에서 Jetty를 쉽게 실행할 수 있도록 지원합니다.

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 Software Development Trend (with Java) 황제낙엽 2024.01.19 592
152 SBOM(Software Bill of Materials) & FOSSLight 황제낙엽 2025.04.04 34
151 현재 유행하는 AI 들을 이용하는 방법 황제낙엽 2025.01.31 55
150 SAP GUI AI Agent를 생성했습니다. 황제낙엽 2025.01.12 65
149 프로그래밍에서 polling 의 의미 황제낙엽 2025.01.05 71
148 [Gemini] server 에서 client 의 function call 를 위한 방안과 특징 황제낙엽 2025.01.03 53
» Gretty 와 Jetty 에 대하여 황제낙엽 2024.11.01 115
146 naver(네이버) developers에서 제공하는 OAuth REST API 관련 링크 황제낙엽 2023.12.31 98
145 (bing) 소프트웨어의 일반적인 버전 관리 규칙 황제낙엽 2023.10.24 72
144 kakao(카카오) developers에서 제공하는 OAuth REST API 관련 링크 황제낙엽 2023.10.22 107
143 식품(상품) 바코드를 조회하여 제품 정보 획득하기 file 황제낙엽 2023.08.07 286
142 식약처(식품의약품안전처) 공공데이터 API 황제낙엽 2023.08.07 124
141 서비스 이용약관과 개인정보 처리방침 황제낙엽 2023.07.15 66
140 프로젝트 운영 관리 소프트웨어로 100% 자동화된 '데브옵스(DevOps)' 구축하기 (LG CNS) secret 황제낙엽 2023.07.12 65
139 개발자이기 전에 노동자로써의 삶에 대한 고찰 (지극히 개인적인 사설) 황제낙엽 2023.02.28 104
138 [SDC22 키노트 요약정리] 더 쉽게, 끊김 없이 매끄럽게! ‘캄 테크’ 향해 진화하는 미래의 집 황제낙엽 2022.12.24 133
137 변수 네이밍 표기법 종류 file 황제낙엽 2022.11.30 81
136 이미지에서 텍스트를 추출하는 OCR 방법들 file 황제낙엽 2022.09.23 110
135 지수(과학적 표기법, "E") 서식 지정자 (2) 황제낙엽 2021.07.06 139
134 REST API 제대로 알고 사용하기 황제낙엽 2021.06.02 130