지난 몇 년간 엔터프라이즈 어플리케이션 개발 분야에서 스프링은 사실상의 표준으로 자리잡았으며 지금도 그 영역을 무한대로 확장해 나가고 있다. 요즘은 스프링 없이 자바기반의 엔터프라이즈 어플리케이션을 개발한다는 건 거의 상상도 하지 못할 일이 되어 버렸다.
그 중에 오늘 소개할 스프링 리모팅 기술은 EJB의 특징적 기능이었던 분산 애플리케이션 개발을 스프링에서도 가능하게 해주는 기술이다. 즉, 리모팅 기능을 사용하면 여러 노드에 분산되어 배포된 기능들을 마치 로컬에 있는 함수를 호출하듯 사용할 수 있게 된다.
EJB2 기반의 애플리케이션 서버에서는 분산 어플리케이션 구성을 위해 RMI/IIOP 구현체를 제공했지만 스프링에서는 RMI외에도 다양한 방식을 제공한다. 단, 스프링 기반의 리모팅의 경우 EJB와는 달리 분산 트랜잭션까지 지원하지는 않는다.
스프링은 다음과 같은 방식의 리모팅 프로토콜을 지원한다.
RMI (Remote Method Invocation) - RMIProxyFactoryBean과 RmiServiceExporter를 이용한다.
스프링의 Http Invoker - HTTP 프로토콜을 이용하며 , 전송하는 객체는 Serialization이 되어야한다. 또한 원격 접근을 위한 메소드는 인터페이스를 통해 선언되어야 한다. HttpInvokerFactoryBean과 HttpInvokerServiceExporter 클래스를 이용한다.
Hessian - Http기반의 경량 바이너리 프로토콜을 사용한다. HessianProxyFactoryBean 과 HessianServiceExporter 을 이용한다. (http://hessian.caucho.com/)
Burlap - Hessian의 XML 버전, BurlapProxyFactoryBean 과 BurlapServiceExporter을 이용한다.
그 외에도 스프링은 리모팅을 위해 JAX-RPC, JAX-WS, JMS등의 프로토콜을 지원한다. 스프링 리모팅 기능을 사용하는 방법은 무척이나 간단하다. 서비스를 노출하는 서버 부분과 서비스를 사용하는 클라이언트 부분에서 적절한 설정을 추가하면 끝이다. 다음은 Http Invoker를 사용할 때 서버측 설정과 클라이언트 설정이다.