English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Spring과 RMI 통합

Spring RMI를 통해 RMI 기반 인프라를 통해 서비스를 공개할 수 있습니다.

Spring은 org.springframework.remoting.rmi를 통해. RmiProxyFactoryBean 와 org.springframework.remoting.rmi. RmiServiceExporter 클래스.

RmiServiceExporter

RMI 객체에 대한 내보내기 서비스를 제공합니다. 일반적인 RMI 또는 RmiProxyFactoryBean을 통해 이 서비스에 접근할 수 있습니다.

RmiProxyFactoryBean

이는 RMI 프록시의 팩토리 벤이며, Bean 참조로 사용할 수 있는 프록시 서비스를 공개합니다.

Spring과 RMI 통합 예제

Spring 애플리케이션과 RMI를 통합하는 간단한 단계를 보여드리겠습니다:

Calculation.java CalculationImpl.java applicationContext.xml client-beans.xml Host.java Client.java


필수 Jar 파일

이 예제를 실행하려면 다음과 같은 파일을 로드해야 합니다:

Spring Core jar 파일 Spring Remoting jar 파일 Spring AOP jar 파일

Spring의 모든 jar 파일을 다운로드하세요. core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm 등.


1Calculation.java

이 인터페이스는 하나의 메서드를 포함한 간단한 인터페이스입니다.

package com.w3codebox;
public interface Calculation {
int cube(int number);
}

2CalculationImpl.java

이 클래스는 Calculation 인터페이스의 구현을 제공합니다.

package com.w3codebox;
public class CalculationImpl implements Calculation{
    @Override
    public int cube(int number) {
        return number*number*number;
    }
}

3applicationContext.xml

이 xml 파일에서 CalculationImpl 클래스와 RmiServiceExporter 이 클래스는 bean을 정의합니다. RmiServiceExporter 클래스의 다음 속성에 값을 제공해야 합니다.

서비스 serviceInterface serviceName replaceExistingBinding registryPort

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="calculationBean" class="com.w3codebox.CalculationImpl"></bean>
<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
    <property name="service" ref="calculationBean"></property>
    <property name="serviceInterface" value="com.w3codebox.Calculation"></property>
    <property name="serviceName" value="CalculationService"></property>
    <property name="replaceExistingBinding" value="true"></property>
    <property name="registryPort" value="1099></property>
</bean>
</beans>

4、client-beans.xml

이 xml 파일에서, 우리는 RmiProxyFactoryBean bean을 정의했습니다. 이 클래스의 두 가지 속성을 정의해야 합니다.

serviceUrl serviceInterface

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">
    
<bean id="calculationBean" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://localhost:1099/CalculationService"></property>
<property name="serviceInterface" value="com.w3codebox.Calculation"></property>
</bean>
</beans>

5、Host.java

그것은 단순히 ApplicationContext의 인스턴스를 가져오지만, 이 예제를 실행하기 위해 이 클래스를 먼저 실행해야 합니다.

package com.w3codebox;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Host{
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println("요청을 기다리는 중");
}
}

6Client.java

이 클래스는 Calculation의 인스턴스를 가져와 이 메서드를 호출합니다.

package com.w3codebox;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("client-beans.xml
Calculation calculation = (Calculation)context.getBean("calculationBean");
System.out.println(calculation.cube(7));
}
}