오늘 살펴볼 스프링 Remote 중에서 RMI 지원은 단순한 POJO 작성만으로도 RMI 서비스를 간편하게 발행할 수 있게 해준다. 간단한 예제를 작성해보자. 일단 프로그램은 java application 으로 하였다. RMI를 통한 통신이므로 서버 및 클라이언트 2개 프로젝트를 만들어야 한다. 먼저 서버를 만든다.
* 서버 작성 *
소스코드는 다음을 참조한다. https://github.com/jeremyko/MySpringRMI
1. Eclipse 에서 신규 프로젝트를 생성한다.
File -> New -> java project -> "MySpringRMI" 프로젝트 생성. 그리고 스프링 관련된 라이브러리들을 프로젝트 속성 -> Java Build Path -> Libraries 에 모두 추가한다.
2. 스프링 설정파일을 다음과 같이 설정한다.
// spring_conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean class="org.springframework.remoting.rmi.RmiServiceExporter"
p:service-ref="helloService"
p:serviceName="HelloService"
p:serviceInterface="kojh.spring.rmi.HelloService" />
<bean id="helloService" class="kojh.spring.rmi.HelloServiceImpl"/>
</beans>
<!-- p:registryPort="1107" -->
service-ref 에는 서비스를 담당할 bean 즉, helloService로 설정한다. serviceName 속성을 통해서 RMI 서비스명을 HelloService 로 설정한다, 나중에 보게 되겠지만 이것을 참조해서 client가 이 서비스를 호출하게 된다. serviceInterface 는 해당 서비스가 구현하고 있는 인터페이스를 설정한다. 참고로, 기본적으로 RMI가 사용하는 포트는 1099 이다. 이값을 변경하기 위한 속성은 registryPort 이다.
3. 서비스 인터페이스를 정의한다.
// HelloService.java
package kojh.spring.rmi;
public interface HelloService
{
String sayHello(String name);
}