JAX-RS
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
JAX-RS(Java API for RESTful Web Services)는 웹 리소스를 리소스 클래스에 매핑하기 위한 Java API 규격이다. `jakarta.ws.rs` 패키지를 사용하며, `@Path`, `@GET`, `@PUT`, `@POST`, `@DELETE`, `@HEAD`, `@Produces`, `@Consumes` 등의 어노테이션을 제공하여 HTTP 요청 유형, 응답 및 요청의 인터넷 미디어 타입을 지정한다. 또한, 요청에서 정보를 가져오기 위한 `@PathParam`, `@QueryParam`, `@MatrixParam`, `@HeaderParam`, `@CookieParam`, `@FormParam`, `@DefaultValue`, `@Context`와 같은 어노테이션을 사용하여 메서드 매개변수에 값을 바인딩한다. JAX-RS는 2008년 9월에 1.0 버전이 발표되었으며, 2.0, 2.1 버전을 거쳐 현재 여러 구현체가 존재한다. 주요 구현체로는 Apache CXF, Jersey, RESTEasy, Restlet 등이 있으며, WebSphere Application Server, WebLogic Server와 같은 상용 WAS에서도 지원한다.
더 읽어볼만한 페이지
- 자바 플랫폼, 엔터프라이즈 에디션 - IBM 웹스피어
IBM 웹스피어는 IBM에서 출시한 기업용 소프트웨어 제품군 브랜드로, 다양한 애플리케이션 인프라, 비즈니스 프로세스 통합, 정보 통합 및 개발 도구를 포함한다. - 자바 플랫폼, 엔터프라이즈 에디션 - 자카르타 서버 페이지
자카르타 서버 페이지(JSP)는 웹 애플리케이션 개발에 사용되는 서버 측 스크립팅 기술로, 서블릿으로 변환되어 실행되고 HTML 형태로 결과를 반환하며, 지시어, 스크립틀릿, 표현식, 액션 등의 문법 요소, 표현 언어(EL), JSTL을 통해 동적인 웹 페이지를 구현하고 개발 편의성을 높였다. - 자바 플랫폼 - 블루레이
블루레이 디스크는 DVD 후속 매체로, 청색 레이저를 사용하여 고화질 영상과 음향을 제공하며 HD DVD와의 경쟁 후 고밀도 광디스크 표준으로 자리 잡았으나 스트리밍 서비스 성장으로 녹화용 디스크 생산이 중단되는 추세이다. - 자바 플랫폼 - 자바 플랫폼, 마이크로 에디션
자바 ME는 임베디드 및 모바일 장치에서 자바 앱을 실행하는 플랫폼으로, 피처폰에서 주로 사용되었으며 다양한 프로파일과 에뮬레이터, 개발 도구를 제공하고 JSR을 통해 기능이 확장된다.
JAX-RS - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
이름 | Jakarta RESTful Web Services (JAX-RS) |
원래 이름 | Java API for RESTful Web Services |
개발 | 선 마이크로시스템즈 오라클 이클립스 재단 |
최신 릴리스 버전 | 3.1.9 |
최신 릴리스 날짜 | 2024년 10월 17일 |
플랫폼 | 자바 |
프로그래밍 언어 | 자바 |
장르 | 애플리케이션 프레임워크 |
라이선스 | EPL 2.0 GPL v2 w/Classpath exception |
웹사이트 | 공식 웹사이트 |
2. 규격 (Specification)
JAX-RS는 웹 리소스로서 리소스 클래스(POJO)를 매핑하는 데 도움이 되는 몇 가지 어노테이션을 제공한다. 사용되는 어노테이션은 `jakarta.ws.rs` 패키지에 정의되어 있다 (Java 패키지 `javax.ws.rs`가 2019년 5월 19일에 이름이 변경됨)[2]).
JAX-RS는 크게 리소스 매핑 어노테이션과 정보 추출 어노테이션으로 나눌 수 있으며, 자세한 내용은 하위 섹션을 참고할 수 있다.
2. 1. 리소스 매핑 어노테이션
JAX-RS는 웹 리소스로서 리소스 클래스(POJO)를 매핑하는 데 도움이 되는 몇 가지 어노테이션을 제공한다. 어노테이션은 Java 패키지 `jakarta.ws.rs`를 사용한다(이전에는 `javax.ws.rs` 였지만 2019년 5월 19일에 이름이 변경되었다[2]).기본적인 어노테이션은 다음과 같다.
- `@Path`는 리소스 클래스 또는 메서드에 대한 상대적인 경로를 지정한다.
- `@GET`, `@PUT`, `@POST`, `@DELETE` 및 `@HEAD`는 리소스의 HTTP 요청 유형을 지정한다.
- `@Produces`는 응답 인터넷 미디어 타입을 지정한다 ( 콘텐츠 협상에 사용됨).
- `@Consumes`는 허용되는 요청 인터넷 미디어 타입을 지정한다.
요청에서 정보를 가져오기 위해 메서드 매개변수에 대한 추가 어노테이션도 제공한다. 모든 `@*Param` 어노테이션은 필요한 값을 조회하는 데 사용되는 특정 형태의 키를 사용한다.
- `@PathParam`은 메서드 매개변수를 경로 세그먼트에 바인딩한다.
- `@QueryParam`은 메서드 매개변수를 HTTP 쿼리 매개변수의 값에 바인딩한다.
- `@MatrixParam`은 메서드 매개변수를 HTTP 매트릭스 매개변수의 값에 바인딩한다.
- `@HeaderParam`은 메서드 매개변수를 HTTP 헤더 값에 바인딩한다.
- `@CookieParam`은 메서드 매개변수를 쿠키 값에 바인딩한다.
- `@FormParam`은 메서드 매개변수를 폼 값에 바인딩한다.
- `@DefaultValue`는 키를 찾을 수 없는 경우 위의 바인딩에 대한 기본값을 지정한다.
- `@Context`는 객체의 전체 컨텍스트를 반환한다 (예: `@Context HttpServletRequest request`).
2. 2. 정보 추출 어노테이션
JAX-RS는 요청에서 정보를 가져오기 위해 메서드 매개변수에 추가적인 어노테이션을 제공한다. 모든 `@*Param` 어노테이션은 필요한 값을 조회하는 데 사용되는 특정 형태의 키를 사용한다.[2] `@DefaultValue`는 키를 찾을 수 없을 때 기본값을 지정하며, `@Context`는 객체의 전체 컨텍스트를 반환한다.2. 2. 1. 파라미터 추출 어노테이션
JAX-RS는 요청에서 정보를 가져오기 위해 메서드 매개변수에 대한 추가 어노테이션을 제공한다. 모든 `@*Param` 어노테이션은 필요한 값을 조회하는 데 사용되는 특정 형태의 키를 사용한다.[2]- `@PathParam`은 메서드 매개변수를 경로 세그먼트에 바인딩한다.
- `@QueryParam`은 메서드 매개변수를 HTTP 쿼리 매개변수의 값에 바인딩한다.
- `@MatrixParam`은 메서드 매개변수를 HTTP 매트릭스 매개변수의 값에 바인딩한다.
- `@HeaderParam`은 메서드 매개변수를 HTTP 헤더 값에 바인딩한다.
- `@CookieParam`은 메서드 매개변수를 쿠키 값에 바인딩한다.
- `@FormParam`은 메서드 매개변수를 폼 값에 바인딩한다.
2. 2. 2. 기타 어노테이션
- `@DefaultValue`는 키를 찾을 수 없는 경우 위의 바인딩에 대한 기본값을 지정한다.[2]
- `@Context`는 객체의 전체 컨텍스트를 반환한다 (예: `@Context HttpServletRequest request`).[2]
3. 버전 역사
JAX-RS 버전 | 발표 | 자바 플랫폼 | 중요한 변화 |
---|---|---|---|
JAX-RS 1.0 | 2008년 9월 예정 | Java EE 6 | JSR 311 |
JAX-RS 2.0 | 2011년 1월 | Java EE 7 | JSR 339 전문가 그룹 구성, 주요 목표는 공통 클라이언트 API와 REST의 HATEOAS 원칙에 따른 하이퍼미디어 지원.[3] |
JAX-RS 2.1 | 2017년 8월 22일 | Java EE 8 | 서버 전송 이벤트, 반응형 클라이언트, JSON-B 지원.[4][5] |
4. 구현 (Implementations)
JAX-RS는 API 자체이며, 실제 구현체로는 다음과 같은 것들이 있다.[6][9]
- Apache CXF
- Jersey
- JBoss RESTEasy
- Restlet
이 외에도 다양한 구현체들이 존재한다.
4. 1. 오픈 소스 구현체
JAX-RS의 주요 오픈 소스 구현체는 다음과 같다:- Apache CXF: 오픈 소스 웹 서비스 프레임워크[6][9]
- Jersey: 오라클(구 썬 마이크로시스템즈)의 참조 구현[6][9]
- [http://www.jboss.org/resteasy RESTEasy]: JBoss의 구현[6][9]
- Restlet[6][9]
- [http://wink.apache.org/ Apache Wink]: 아파치 소프트웨어 재단의 서버 모듈[9]
- Apache Tuscany (http://tuscany.apache.org/documentation-2x/sca-java-bindingrest.html) (중단됨)[6]
이 외에도 다음과 같은 구현체들이 존재한다:
- IBM WebSphere Application Server[6]
- 버전 7.0: [http://www-01.ibm.com/software/webservers/appserv/was/featurepacks/cea/index.html "통신 지원 애플리케이션용 기능 팩"]
- 버전 8.0 이상: 기본적으로
- 오라클 WebLogic Application Server [http://docs.oracle.com/cd/E24329_01/web.1211/e24963/standards.htm#g1090347 참고][6]
- Cuubez 프레임워크 (https://web.archive.org/web/20190707005602/http://cuubez.com/)[6]
- [https://github.com/codenvy/everrest/wiki Everrest] (Codenvy)[6]
- [http://jello-framework.com Jello-Framework]: Google App Engine에 최적화된 Java 애플리케이션 프레임워크 (강력한 RESTful 엔진과 포괄적인 데이터 권한 부여 모델 포함)[6]
- 아파치 톰EE: 아파치 톰캣에 추가됨[6]
4. 2. 상용 WAS
- IBM의 WebSphere Application Server:[6]
- * 버전 7.0: 통신 지원 애플리케이션용 기능 팩을 통해
- * 버전 8.0 이상: 기본적으로
- 오라클의 WebLogic Application Server: 참고[6]
4. 3. 기타
- Cuubez 프레임워크[6]
- Everrest, Codenvy의 구현[6]
- Jello-Framework, 구글 앱 엔진에 최적화된 Java 애플리케이션 프레임워크.[6]
- 아파치 톰EE(Apache TomEE), 아파치 톰캣(Apache Tomcat)에 추가됨[6]
참조
[1]
문서
Hadley, p. 1.
[2]
웹사이트
Rename package commit on Github
https://github.com/e[...]
[3]
웹사이트
JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services
http://jcp.org/en/js[...]
[4]
웹사이트
JSR 370: Java API for RESTful Web Services (JAX-RS 2.1) Specification
http://jcp.org/en/js[...]
[5]
웹사이트
JSR 367: Java API for JSON Binding (JSON-B)
http://jcp.org/en/js[...]
[6]
웹사이트
A Comparison of JAX-RS Implementations
http://www.infoq.com[...]
2008-10-01
[7]
문서
Hadley, p. 1.
[8]
웹사이트
JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services
http://jcp.org/en/js[...]
[9]
웹사이트
A Comparison of JAX-RS Implementations
http://www.infoq.com[...]
Mark Little
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com