반응형
# 서버쪽 소스
com.example.server 쪽 신규 클래스로 StockPriceServiceImpl 파일을 만든다.
서버쪽에서 GWT의 서비스 요청을 받아줄 부분이다.
항상 RemoteServiceServlet 을 확장해야하며, 서비스 메소드가 담긴 StockPriceService 인터페이스를 구현해야 한다.
명심할 점은 이것은 GWT 클라이언트같이 최종소스가 javascript 가 아니라는 점이다.
즉, 컴파일후 이 파일은 class 파일로 byte 코드이다.
그 차이점은 Random 클래스를 쓸때 google 의 클래스가 아닌 java.util.Random 을 쓴다는것에서 알수 있을 것이다.
# 클라이언트
com.example.client 신규로 StockPriceService 를 만든다.
서버를 위한 RPC 의 인터페이스 파일이다. 소스는 매우 간단하므로 보면 바로 파악이 가능하다.
특이점은 @RemoteServiceRelativePath("stockPrices") 이부분이다.
이부분은 web.xml 파일에 정의를 통해 서비스콜위치를 정해준다.
즉, 이 서비스의 서버요청을 위해서 접근할 url 은 /stockwatcher/stockPrices 이 되는 것이다. ( stockwatcher 은 기본 서비스 위치 )
그래서 web.xml에 다음 부분을 추가 해야 한다.
stockwatcher 부분은
com.example 의 ( 시스템 소스 루트 ) StockWatcher.gwt.xml 파일에 정의 되어 있다.
끝으로 메인 프로세스인 StockWatcher.java 에서
내부에서 자동으로 생성했던 스톡데이터 대신 다음과 같이 RPC 로 바꿔주면 된다.
하지만 이대로 컴파일 실행하면 Runtime 오류가 발생한다.
클라이언트와 서버간 직렬화 오류이다-ㅅ-;;
간단하게 Bean 파일인 StockPrice.java 에 Serializable 인터페이스만 구현해주면 된다. ( 실제 구현하는것은 없다 )
매우 중요한 예외처리 로직은 이글의 참조 원본인
http://code.google.com/intl/ko/webtoolkit/doc/latest/tutorial/RPC.html
을 참조하면 된다.
끝으로 수정완료된 파일을 첨부한다. ( 예외처리 관련 css 스타일 수정은 하지 않았다. )
반응형