다양하게 표현되는 미디어 타입으로 데이터 전달을 완벽하게 지원하면서 클라이언트-서버 통신의 하위 수준의 세부정보는 추상화하는 RESTful 웹 서비스를 개발하는 것은 훌륭한 툴킷이 없이는 쉬운 작업이 아니다. Java에서 RESTful 웹 서비스와 클라이언트 개발의 단순화하기위해서 JAX-RS API가 설계되었다. Jersey RESTful 웹 서비스 프레임워크는 Java로 RESTful 웹 서비스를 개발하기위한 오픈 소스, 프로덕션 품질, 프레임워크이다. Jersey는 JAX-RS API를 지원하고 JAX-RS (JSR 311 & JSR 339) 참조 구현체의 역할을 한다.
Jersey 프레임워크는 JAX-RS 참조 구현체 이상이다. Jersey는 JAX-RS 툴킷을 추가적인 기능과 유틸리티로 확장하여 RESTful 서비스 및 클라이언트 개발을 더욱 단순화하는 자체 API를 제공한다. Jersey는 또한 수많은 확장 SPI를 제공하므로 개발자는 필요에 따라 Jersey를 확장 할 수 있다.
Jersey 프로젝트의 목표는 다음과 같이 요약할 수 있다.
❗️ NOTE
SIP (Session Initiation Protocol) 세션 설정 프로토콜
음성과 화상 통화같은 멀티미디어 세션을 제어하기 위해 널리 사용된다. 인터넷 상에서 통신하고자 하는 지능형 단만 (전화, 인터넷 콘퍼런스, 인스턴스 메신저 등)들이 서로를 식별하여 그 위치를 찾고, 상호 간에 멀티미디어 통신 세션을 생성, 삭제, 수정하기 위한 절차를 명시한 응용 계층의 시그널링 프로토콜이다.SIP에서 세션은 다음과 같다.
- Internet multimedia conferences (다자간 회의)
- Internet telephone calls (음성 전화)
- Internet video session (영상 전화)
- Subscriptions and Nofitifations for Events (이벤트 신청 및 통지)
- Publications of State (상태 정보 배포)
Java™ API for RESTful Web Services
자바 플랫폼에서 경량화된 REST 방식의 웹 애플리케이션 구현을 지원하는 자바 API
SOAP 기반의 SOA 연동은 자바 애플리케이션을 무겁게 한다는 비판과 함께, 최근 웹 어플리케이션의 경향인 AJAX 기반으로 JSON이나 RSS와 같이 간결한 프로토콜을 사용한 연동이 보편화되면서 쉽게 구현할 수 있도록 Java EE에 JAX-RS라는 사양이 포함되고 있다.
@Consumes(MediaType.APPLICATION_JSON)
)@Produce("text/html")
→ 클라이언트에서 Accept:text/html 을 보냈다면 해당 어노테이션을 가진 메소드로만 접근가능)MessageBodyReader
는 HTTP 요청 엔터티 바디를 메서드 매개 변수에 매핑하는데 사용된다. 응답 측에서 반환값은 MessageBodyWriter
를 사용하여 HTTP 응답 엔터티 바디에 매핑된다. 응용 프로그램이 HTTP 헤더나 다른 상태 코드와 같은 추가 메타 데이터를 제공해야하는 경우, 엔터티를 래핑하고 Response.ResponseBuilder
를 사용해 작성한 Response를 반환 할 수 있다.❗️NOTE
Accept Header : 응답 결과로 받을 수 있는 미디어 타입 명시
Content-Type Header : 요청시 보낸 entity-body에 대한 미디어 타입. 즉, request의 body의 타입.