# 원문 위치
http://code.google.com/intl/ko/webtoolkit/doc/latest/tutorial/RPC.html
# 기본 정보
*. GWT 튜토리얼 중 클라이언트-서버 커뮤니케이션 방법중 하나인 GWT-RPC 에 관한 것이다.
기본적으로 GWT 튜토리얼을 익히고 와야지 이해가 가능하다.
# 리모트 프로지셔 콜 만들기
이전에, 클라이언트 사이드에서 주식 데이터를 생성하는 것을 만들었다.
이번에는 서버쪽에서 주식데이터를 생성하는 GWT 리모트 프로시져 콜을 만들 것이다.
-생략-
배울 내용들:
1. 서버에 서비스 생성
2. 클라이언트에서 서비스 요청
3. 데이터 오브젝트의 직렬화 (주: 주식데이터를 자바스크립트 오브젝트로 )
4. 예외처리
*. 시작하기전에
스톡와쳐 프로젝트
GWT 샘플예제로 만든 스톡와쳐 프로젝트를 기반으로 이번 튜토리얼은
진행하게 된다. 이전 샘플을 마무리 짓지 않았다면, 다음과 같이 준비 하도록 한다.
1. 스톡와쳐 프로젝트를 다운받는다.
3. 파일의 압축을 푼다.
3. 프로젝트를 이클립스로 임포트 한다.
1. 상단 메뉴중 File > Import 를 선택한다.
2. 임포트 소스로 General > Existing Projects into Workspace 를 선택하고 Next 버튼을 누른다.
3. 루트 디렉토리에서 스톡와쳐 디렉토리를 선택하고, Finish 버튼을 누른다.
컴파일이 정상적으로 되지 않을 경우에는 스톡와쳐의 build.xml 파일의
gwt.sdk 파일의 위치를 알맞게 수정한다.
GWT RPC 란 무엇인가?
GWT RPC 프레임 워크는 클라이언트와 서버컴포넌트가 HTTP 를 이용하여
java Object 를 쉽게 주고 받을 수 있게 해준다. 서버는 클라이언트로 부터
보통 "서비스"라고 불리우는 요청을 받는다. GWT RPC 서비스는 자바 서블릿 구조를 기본으로
구현 되어 있다. 클라이언트 코드에서 서비스를 요청하기 위해 자동으로 만들어지는
프록시 클래스를 사용할 것이다. GWT에서는 전달 되어 오는 자바 오브젝트를 다루게 된다.
요청시의 인수와 리턴값을 다룬다.
>>중요<<
GWT RPC 는 SOAP 또는 REST 를 기반으로하는 서비스와 같지 않다.
이것은 클라이언트의 GWT 앱과 서버간 데이터 전송을 정의하는
단순한 방법이다. 싱글과 멀티티어 방식으로 GWT RPC 서비스를 자신의
앱에 포함시키는 방식을 비교하기 위해서는,
개발자 가이드 Architectural Perspectives 를 확인해라
GWT RPC 구조의 자바 컴포넌트
GWT RPC 를 구성할때, 원격서버에서 구동되는 콜링 프로시저를 포함해서
세가지의 엘리먼트를 알아야 한다.
1. 서버에서 구동되는 서비스 ( 클라이언트가 호출 )
2. 서비스를 요청하는 클라이언트 코드
3. 클라이언트와 서버가 주고받는 자바 데이터 오브젝트
서버와 클라이언트 양쪽 모두 직렬화 기능이있다. 글서
데이터 오브젝트는 평문 텍스트로 보내질 수 있다.
> 그림 1 <
RPC 인터페이스를 정의할때 세가지 컴포넌트가 필요하다.
1. RemoteService 와 당신의 RPC 메소드를 확장하여 서비스 인터페이스 ( StockPriceService ) 를 정의한다.
2. RemoteServiceServlet 과 당신이 필요한 인터페이스를 구현한 것을 확장하여 클래스를 생성한다. ( StockPriceServiceImpl )
3. 클라이언트 코드에서 호출할 수 있는 비 동기적인 인터페이스 ( StockPriceServiceAsync ) 를 정의한다.
서버 서비스는 반드시 RemoteServiceServlet 그리고 관련된 서비스 인터페이스를
확장하여 구현해야 한다. 중요한 점은 서비스는 비동적기적인 인터페이스 는 구현하지 않는다는 점이다.
모든 서비스는 궁극적으로 서블릿이지만, HttpServlet 을 확장하지 않고, RemoteServiceServlet 을 확장한다.
RemoteServiceServlet 은 자동적으로 클라이언트에서 전송되는 직력데이터를 다루고, 요청되는 서비스와 메소드를
실행하여 준다.