Spring Remoting

Remoting이란 클라이언트 어플리케이션과 원격 어플리케이션에서 제공하는 서비스간의 의사소통을 말한다.
Spring Remoting에서 지원하는 원격 기술은 다음 표와 같다.
원격 기술
설명
RMI(Remote Method Invocation) 방화벽과 같은 네트워크 제약이 없는 상황에서 자바 기반의 서비스를 공개하거나 접근하려는 경우에 사용한다.
Hessian/Burlap 방화벽과 같이 네트워크 제약이 있는 상황에서 자바 기반의 서비스를 공개하거나 접근하려는 경우에 사용한다.
HTTP Invoker 방화벽과 같이 네트워크 제약이 있는 상황에서 Spring 기반의 서비스를 공개하거나 접근하려는 경우에 사용한다.
Web Services 웹 서비스에 접근하여 서비스를 호출하는 경우에 사용한다. Anyframe에서는 Web Services 기능을 Spring에서 제공하는 Web Service 기능이 아닌, Apache CXF Web Service Framework에서 제공하는 기능을 이용하여 제공하고 있다. Apache CXF는 JDK 5.0만을 지원하므로 Anyframe Core를 통해 Web Service 기능을 구현하려면 JDK 5.0을 설치해야 함에 유의하도록 한다. 웹 서비스에 접근하여 서비스를 호출하는 Web Services 매뉴얼 내용은 Web Services 메뉴 를 참고하도록 한다.

Spring Remoting 기술 별 장점 및 단점

원격 기술
장점
단점
RMI 자바 객체 직렬화 매커니즘을 지원하므로 복잡한 형태의 데이터 타입을 네트워크 상에서 전송 가능함 자바 대 자바 Remoting 솔루션이며 HTTP 프로토콜을 사용할 수 없음. RMI 컴파일러와 레지스트리가 별도로 필요함
Hessian/Burlap 방화벽 문제 없음 자체 객체 직렬화 매커니즘을 가지고 있어서 복잡한 형태의 데이터 타입 사용이 어려움. Burlap은 자바 클라이언트만 지원함
HTTP Invoker HTTP 기반의 Remoting 기술 사용 편의성 자바 대 자바 Remoting 솔루션이며 서버와 클라이언트 모두 Spring 어플리케이션으로 구축해야 함
EJB Remoting, 어플리케이션 보안, 트랜잭션 처리 등을 위한 J2EE 서비스 무거운(heavyweight) 기술로 J2EE 컨테이너가 반드시 필요함
Web Services 플랫폼과 언어에 독립적 SOAP을 사용하며 웹 서비스 구동을 위한 엔진이 필요함

Resources

  • 다운로드
  • 샘플 테스트 코드를 포함하고 있는 anyframe-remotingtest-src.zip 파일을 다운받은 후, 테스트 환경 설정 을 참조하여 위에서 제시한 예제 코드를 실행해 볼 수 있다. anyframe-remotingtest-src 프로젝트 내에서는 모든 테스트 케이스들이 하나의 프로젝트 내에 포함되어 있다. Spring Remoting 관련 테스트 케이스는 src/test/java 소스 폴더의 anyframe.core.remoting 패키지 하위 중 burlap, hessian, httpinvoker, rmi에 위치하고 있다. 각각의 테스트 케이스 클래스를 JUnit Test Framework을 이용하여 수행시키도록 한다.
    Name
    Download
    anyframe-remotingtest-src.zip
    Download

  • Test Case 구성
    • RMI, Hessian/Burlap, HTTP Invoker에 대한 Test Case는 모두 RemotingSpringTestCase 를 상속받아 구성하였다.
    • Test Case 내에서 서버 구동과 클라이언트 호출 부분이 함께 작성 되어 있다. Test Case 실행 시 먼저 getConfigLocations() 메소드가 호출되는데 이때, onSetUpServer() 메소드를 통해 서버 구동을 먼저 시킨 후 클라이언트 Spring 설정 XML 파일을 로드한다. 이후 onSetUp() 메소드가 호출된 후, testXXX() 메소드를 수행하여 클라이언트에서 서버 사이드의 서비스를 호출하여 테스트 케이스를 실행시킨다. 테스트 메소드 수행이 완료되면 onTearDown() 메소드를 통해 서버 실행을 중지시키는 역할을 수행한다.
    • Web Services에 대한 Test Case는 Web Services 매뉴얼 을 참고한다.
  • 참고자료