English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring RMI를 통해 RMI 기반 인프라를 통해 서비스를 공개할 수 있습니다.
Spring은 org.springframework.remoting.rmi를 통해. RmiProxyFactoryBean 와 org.springframework.remoting.rmi. RmiServiceExporter 클래스.
RmiServiceExporter
RMI 객체에 대한 내보내기 서비스를 제공합니다. 일반적인 RMI 또는 RmiProxyFactoryBean을 통해 이 서비스에 접근할 수 있습니다.
RmiProxyFactoryBean
이는 RMI 프록시의 팩토리 벤이며, Bean 참조로 사용할 수 있는 프록시 서비스를 공개합니다.
Spring 애플리케이션과 RMI를 통합하는 간단한 단계를 보여드리겠습니다:
Calculation.java CalculationImpl.java applicationContext.xml client-beans.xml Host.java Client.java
이 예제를 실행하려면 다음과 같은 파일을 로드해야 합니다:
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)); } }