2011년 5월 24일 화요일

JAX-RS: Java™ API for RESTful Web Services - 1

JAX-RS: Java™ API for RESTful Web Services
REST(Representation State Transfer) 정의
REST WWW 같은 분산형 시스템을 위한 소프트웨어 아키텍처 스타일 하나이다. 용어는 2000년에 Roy Fielding 박사 논문에서 소개되었으며, 이후 네트워킹 커뮤니티에서 널리 사용되어 왔다. REST에서 중요한 개념 하나는 리소스의 존재인데, 리소스는 전역 식별자인 URI 사용하여 참조할 있다. 리소스를 조작하기 위해 네트워크, 클라이언트 서버 구성 요소가 HTTP 같은 표준화된 인터페이스를 사용하여 통신하고 리소스의 표현을 교환한다.
REST 기본 개념
Client에서 특정 URI Request하게 되면 Server 해당 Resource 대해 html이나 xml 형태로 Response하게 된다. 이때 State Transfer 발생하게 되고 결과로 Client 새로운 표현(Representation) 상태로 바뀌게 된다.
RESTful 정의
REST 어떠한 표준에 대한 용어가 아닌 Architectural Style이며 개발자는 이를 단지 이해하고 Web Service 설계 있다. 이렇게 REST 원칙을 따르는 것을 RESTful하다고 한다.
RESTful Web Service
RESTful Web Service RESTful 아키텍처 스타일을 사용하여 작성한 서비스이다. RESTful 방식의 서비스 작성은 SOAP 기반 기술을 사용하여 인터넷에서 서비스를 배포하는 방법의 대안으로 새롭게 각광받고 있는데, 가벼울 아니라 직접 HTTP 통해 데이터를 보낼 있기 때문이다.
RESTful Web Service 특징
- SOAP+WSDL 오브젝트를 매개로 하는 행위(behavior) 중심이라면, REST 웹에 존재하는 Resource 상태가 핵심이다.
- 접근을 허용하기 위한 모든 Resource URI 형태로 공개된다.
- HTTP 가지 Method POST, GET, PUT, DELETE 이용하여 웹상의 Resource 접근한다.
- REST 무상태(Stateless)이며, Client에서 Server로의 각각의 요청(Request) 요청을 이해하기 위해 필요한 모든 정보를 반드시 포함해야 하며, Server에서 어떤 저장된 Context 이점을 취할 없다.
RESTful Web Service 기본 원리
- 리소스(Resource) 표현(Representation). 특정 서비스에 하나의 종단점을 제공하고 종단점이 여러 작업을 수행하게 하지 않고 리소스에 대한 액세스를 제공한다. 리소스는 여러분이 클라이언트로 하여금 액세스할 있게 해주는 애플리케이션의 부분이다. 리소스는 네트워크를 통해 전송할 없으므로 " 리소스를 제공한다" 것은 상태의 표현을 전달하는 것을 의미한다.
- 주소 지정 가능성(Addressability) 연결성(Connectedness). 리소스는 표현을 갖지만, 주소를 지정할 없다면 리소스의 표현을 전달하더라도 쓸모 없다. REST에서는 모든 리소스가 하나 이상의 주소, URI 가져야 한다. 리소스 주소를 지정하려면 URI 지정하면 된다. 이러한 개념을 "주소 지정 가능성"이라고 한다. 애플리케이션을 게시하면 서로 연결된 많은 URI 제시하게 된다. 연결성 덕분에 "부트스트랩 URI"라고 부르는 URI 하나만 클라이언트에게 전달하면 된다.
- 동일한 인터페이스(Uniform interface) URI 표현을 통해 클라이언트와 서버 간에 리소스를 주고 받을 있게 하더라도 아직 통신을 설정할 수는 없다. 사용할 통신 프로토콜/인터페이스가 필요하다. REST 아키텍처에서는 그러한 인터페이스가 동일해야 한다. 어떤 URI 액세스하더라도 인터페이스가 같아야 한다. 예를 들어, WWW에서는 어떤 URI(리소스 주소) 들어가더라도 브라우저에서는 HTTP GET 메소드를 사용하여 해당 페이지(리소스 표현) 읽어들여 표시한다.
- 상태 비보존성(Statelessness). 상태 비보존성이란 애플리케이션이 클라이언트의 상태에 대한 정보를 보관하지 않는다는 것이다. REST에서는 HTTP 세션의 개념을 수용하지 않는다. 클라이언트는 필요하다면 자신의 작업을 추적할 책임이 있다. 서비스는 리소스를 유지하면서 클라이언트에게 동일한 인터페이스를 제공한다.
JAX-RS(JAVA API for RESTful Web Services)
JAX-RS Java에서 RESTful Web Service 작성할 있는 표준화된 API 제공한다. API 기본적으로 Annotation 그리고 관련된 Class Interface 모음을 제공한다. Annotation POJO(Plaiin Old Java Object) 적용하면 리소스를 공개할 있다. 2008 4 22 현재 ver 0.8 드래프트 단계이다.
관련 사이트 : https://jsr311.dev.java.net
Jersey
Jersey JAX-RS 참조 구현 하나이며, Jersey JAX-RS보다 추가 적인 APIs 제공하고 개발자들이 필요에 맞게 확장가능하도록 extension points(SPIs) 제공한다. 2008 4 22 현재 버전은 0.8 이다.
관련 사이트 : https://jersey.dev.java.net
Jersey 설치 Build
1. https://jersey.dev.java.net에서 Jersey 최신 버전 다운로드
2. 압축 해제
3. “Jersey” Home Directory에서 “Ant” Build 실행
4. “{Jersey_HOME}/dist” Directory “jersey.jar” 확인
Jersey Sample 실행
실행 환경 : Apache Tomcat 6.0.16(http://tomcat.apache.org)
1. Tomcat 설치 실행
2. {Jersey_HOME}/examples 이동
3. 실행할 Sample 선정(여기서는 “HelloWorldWebApp” 선택)
4. “HelloWorldWebApp” 이동
5. “Ant” Build 실행
6. “dist” Directory 이동 “SimpleServlet.war” 파일을파일이름이 잘못 같음 “HelloWorldWebApp.war” 되어야 .- Tomcat webapps Directory Copy

댓글 1개:

  1. 제가 이글을 쓴게 2008년 4월이네요. 그때 Restful을 쓰고 있었군요.3년이흘렀는데 지금은 거의 표준이 되었군요.

    답글삭제

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...