Jersey

rin·2020년 6월 8일
0
post-thumbnail

About

ref. https://eclipse-ee4j.github.io/jersey/

다양하게 표현되는 미디어 타입으로 데이터 전달을 완벽하게 지원하면서 클라이언트-서버 통신의 하위 수준의 세부정보는 추상화하는 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 프로젝트의 목표는 다음과 같이 요약할 수 있다.

  • JAX-RS API를 추적하고 GlassFish와 함께 제공되는 프로덕션 수준의 참조 구현체의 정기 릴리즈를 제공한다.
  • Jersey의 확장 API를 제공하고 사용자와 개발자의 커뮤니티를 구축한다.
  • Java와 JVM을 사용하여 RESTful 웹 서비스를 쉽게 구축하도록 한다.

❗️ NOTE
SIP (Session Initiation Protocol) 세션 설정 프로토콜
음성과 화상 통화같은 멀티미디어 세션을 제어하기 위해 널리 사용된다. 인터넷 상에서 통신하고자 하는 지능형 단만 (전화, 인터넷 콘퍼런스, 인스턴스 메신저 등)들이 서로를 식별하여 그 위치를 찾고, 상호 간에 멀티미디어 통신 세션을 생성, 삭제, 수정하기 위한 절차를 명시한 응용 계층의 시그널링 프로토콜이다.

SIP에서 세션은 다음과 같다.

  • Internet multimedia conferences (다자간 회의)
  • Internet telephone calls (음성 전화)
  • Internet video session (영상 전화)
  • Subscriptions and Nofitifations for Events (이벤트 신청 및 통지)
  • Publications of State (상태 정보 배포)

JAX-RS

Java™ API for RESTful Web Services
자바 플랫폼에서 경량화된 REST 방식의 웹 애플리케이션 구현을 지원하는 자바 API
SOAP 기반의 SOA 연동은 자바 애플리케이션을 무겁게 한다는 비판과 함께, 최근 웹 어플리케이션의 경향인 AJAX 기반으로 JSON이나 RSS와 같이 간결한 프로토콜을 사용한 연동이 보편화되면서 쉽게 구현할 수 있도록 Java EE에 JAX-RS라는 사양이 포함되고 있다.

  • @Path
    Java 클래스가 호스팅될 위치를 나타내는 상대 URI 경로
  • @GET
    HTTP GET 요청을 처리하며, 리소스의 동작은 응답하는 HTTP 메서드에 의해 결정
  • @POST
    HTTP POST 요청을 처리하며, 리소스의 동작은 응답하는 HTTP 메서드에 의해 결정
  • @PUT
    HTTP PUT 요청을 처리하며, 리소스의 동작은 응답하는 HTTP 메서드에 의해 결정
  • @DELETE
    HTTP DELETE 요청을 처리하며, 리소스의 동작은 응답하는 HTTP 메서드에 의해 결정
  • @HEAD
    HTTP HEAD 요청(특정 리소스를 GET 메서드로 요청할 시 돌아올 "헤더"를 요청)을 처리하며, 리소스의 동작은 응하는 HTTP 메서드에 의해 결정
  • @PathParam
    리소스 클래스에서 사용하기 위해 추출하려는 매개변수 유형. URI 경로 매개변수는 요청 URI에서 추출되며, 매개변수의 이름은 @Path 클래스 어노테이션에서 지정된 URI 경로의 템플릿 변수(/{id}) 이름에 해당한다.
  • @QueryParam
    리소스 클래스에서 사용할 수 있도록 추출할 수 있는 매개변수 유형. 쿼리 매개 변수는 요청 URI 쿼리 매개 변수(?key=value&key=value...)에서 추출된다.
  • @Consumes
    클라이언트가 보낸 리소스의 타입(MIME 미디어 유형)을 지정하는 데 사용한다. (@Consumes(MediaType.APPLICATION_JSON))
  • @Produces
    클라이언트로 리소스를 전송할 때 가능한 타입(MIME 미디어 유형)을 지정하는데 사용된다. (@Produce("text/html") → 클라이언트에서 Accept:text/html 을 보냈다면 해당 어노테이션을 가진 메소드로만 접근가능)
  • @Provider
    MessageBodyReader 및 MessageBodyWriter와 같이 JAX-RS 런타임에 관심있는 모든 것에 사용된다. HTTP 요청의 경우 MessageBodyReader는 HTTP 요청 엔터티 바디를 메서드 매개 변수에 매핑하는데 사용된다. 응답 측에서 반환값은 MessageBodyWriter를 사용하여 HTTP 응답 엔터티 바디에 매핑된다. 응용 프로그램이 HTTP 헤더나 다른 상태 코드와 같은 추가 메타 데이터를 제공해야하는 경우, 엔터티를 래핑하고 Response.ResponseBuilder를 사용해 작성한 Response를 반환 할 수 있다.

❗️NOTE
Accept Header : 응답 결과로 받을 수 있는 미디어 타입 명시
Content-Type Header : 요청시 보낸 entity-body에 대한 미디어 타입. 즉, request의 body의 타입.

profile
🌱 😈💻 🌱

0개의 댓글

관련 채용 정보