회사에서 XMLRPC를 사용할 부분이 생겨서 간단하게 테스트용으로 만들었다.
v3.0이 나온지 얼마되지 않고 v2.0과 다른 부분이 많기 때문에 삽질을 꽤나했었다. (아직 홈페이지에 가면 v2.0의 jar 파일을 다운로드 받을 수 있다) 이번 테스트는 웹 애플리케이션용으로 만들어졌다.

● 개발환경
  - H/W : Dell insprion 6400
  - OS : Windows XP
  - Web Server : Tomcat 5.0.28
  - Platform : JDK 1.5
  - IDE : Ecilpse 3.1 + WDT

● 사용 라이브러리
  - Apache XML-RPC
  - ws-commons-util-1.0-SNAPSHOT.jar

● 참고문서
  - http://ws.apache.org/xmlrpc/server.html
  - http://ws.apache.org/xmlrpc/client.html
  - http://www.petrovic.org/blog/?p=127 (상당히 많이 참고했다.)

● 선수지식
  - 웹 프로그래밍 (Servlet 프로그래밍)

● 구조

이클립스에서 캡쳐했다.


● 서버
  - Server.java : 다운로드
  소스 내용은 진짜 간단하다. XmlRpcServlet을 상속받는 것밖에 없다. 그 외에는 보통의 Servlet 클래스와 다른 면이 없다.

  - XmlHandler.java : 다운로드
클라이언트에 의해 호출될 Class다. add 메소드는 간단히 두 수를 넘겨받아 더한 후 그 값을 리턴하는 메소드다.

  - XmlRpcServlet.properties : 다운로드
위의 두 클래스를 연결해 주는 properties 파일이다. 단순히 Client가 호출할 이름과 XmlHandler.java만 쓰여져있다. 이것이 v2.0과 큰 차이점 중 하나인데, 이전 버전에서는 setHandler라는 메소드를 통해서 mapping되었다면, 이번 버전에서는 상위 클래스에서 자동적으로 이 파일을 읽어서 알아서 mapping해준다.
주의할 점은 org.apache.xmlrpc.webserver 안에 존재해야 한다는 것이다. (임의로 디렉토리를 만든 다음, 이 파일을 넣어주면 된다)

● 클라이언트
- Client.java : 다운로드
안에 보면 상당히 간단하다. 위의 참고 문서(apache에서의 Client 설명)를 보면 설명이 잘 되어있다. xmlServer를 설정한 후, 위의 properties에서 mapping한 이름의 메소드를 호출하면서 parameter를 넘겨준다. 그 후 XmlHandler에서 리턴하는 값을 출력하도록 되어있다.
Posted by xHuro
,