GET방식의 RESTful 웹서비스 구현하기#

서비스 만들기#

<div class="note"> 개발환경은 Axis2 1.2, Restlet 1.0.1, JDK 1.5.0_11, eclipse 3.3RC1+wtp 2.0RC1 입니다. </div>

다음처럼 eclipse의 Dynamic Web Project를 선택한다.
1.gif

샘플용 애플리케이션의 프로젝트명은 RESTService이다.
2.gif

Project Facets에서 Axis2 Web Service를 꼭 선택한다. 이 값을 선택하기 위해서는 eclipse의 셋팅에서 Web Service항목의 Axis2 Preferences값이 반드시 셋팅되어 있어야만 한다.
3.gif

기본적으로 프로젝트 소스는 다음과 같은 구조로 자동생성된다.
4.gif

웹서비스용 자바 클래스를 생성한다. 여기서 사용된 클래스명은 RestGetService이다.
5.gif

다음처럼 getString(String msg) 메소드를 추가한다.

package kr.or.openframework;

public class RestGetService {
  public String getString(String msg){
    return msg;
  }
}

다음처럼 해당 클래스를 웹서비스로 만들기 위해 메뉴를 선택한다.
6.gif

Web Service runtime이 Apache Axis2 인지 확인한다. eclipse의 디폴트 Web Service runtime는 Apache Axis이다.
7.gif

다음에 창이 3개정도 더 이어지지만 추가적인 작업을 하지 않은 상황이라면 그냥 디폴트 값을 사용해서 다음으로 계속 넘어간다. 그리고 나면 다음처럼 정상적으로 작업을 마친것을 확인할수 있다.
8.gif 9.gif

그리고 다음과 같은 url을 사용하면 방금 만든 서비스의 wsdl을 조회할수 있다. http://localhost:8080/RESTService/services/RestGetService?wsdl

현재까지 에러없이 정상적으로 이루어졌다면 웹서비스는 정상적으로 생성이 된 셈이다.

클라이언트 만들기#

다음처럼 클라이언트로 사용할 클래스를 만든다.
10.gif

소스는 다음과 같이 만든다. 여기서 사용되는 라이브러리는 Restlet이다. Restlet의 한글 튜토리얼이 있다. 완전히 작업이 된것은 아니지만 참조를 위해 볼수는 있을 정도로 번역이 되어 있다.

package kr.or.openframework.client;

import java.io.IOException;

import org.apache.axis2.AxisFault;
import org.restlet.Client;
import org.restlet.data.Protocol;
import org.restlet.data.Response;
import org.restlet.resource.DomRepresentation;

public class RestGetServiceClient {
  private static String toEpr = "http://localhost:8080/RESTService/services/RestGetService";

  public static void main(String[] argsthrows AxisFault {
    String uri = toEpr + "/getString?msg=OK";
    Response response = new Client(Protocol.HTTP).get(uri);
    DomRepresentation document = response.getEntityAsDom();
    
    try {
      System.out.println(document.getText());
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}

여기서 주의할 점은 /getString? 뒤의 값의 조합은 getString(String msg) 에서 사용한 인자의 이름을 사용하여야 한다는 것이다. 즉 msg에 값을 입력하는 개념으로 msg=OK 라고 해야지 다르게 str=OK라고 하면 값을 제대로 전달되지 않는다. http://localhost:8080/RESTService/services/RestGetService/getString?msg=OK 로 request를 보내게 되면 응답은 다음과 같을 것이다.

<?xml version="1.0" encoding="UTF-8"?>
<ns:getStringResponse xmlns:ns="http://openframework.or.kr/xsd">
  <ns:return>OK</ns:return>
</ns:getStringResponse>

Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
gif
1.gif 14.9 kB 1 06-Jun-2007 22:49 fromm0
png
1.png 16.0 kB 1 06-Jun-2007 22:47 fromm0
gif
10.gif 15.5 kB 1 06-Jun-2007 23:10 fromm0
gif
2.gif 17.6 kB 1 06-Jun-2007 22:49 fromm0
png
2.png 18.2 kB 1 06-Jun-2007 22:47 fromm0
gif
3.gif 16.7 kB 1 06-Jun-2007 22:49 fromm0
png
3.png 18.6 kB 1 06-Jun-2007 22:48 fromm0
gif
4.gif 6.0 kB 1 06-Jun-2007 22:49 fromm0
gif
5.gif 15.3 kB 1 06-Jun-2007 22:49 fromm0
gif
6.gif 37.7 kB 1 06-Jun-2007 23:09 fromm0
gif
7.gif 37.5 kB 1 06-Jun-2007 23:10 fromm0
gif
8.gif 8.0 kB 1 06-Jun-2007 23:10 fromm0
gif
9.gif 32.4 kB 1 06-Jun-2007 23:10 fromm0
« This page (revision-7) was last changed on 06-Jun-2007 23:19 by fromm0