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

Integración de Spring con RMI

Spring RMI le permite publicar servicios a través de la infraestructura RMI.

Spring utiliza org.springframework.remoting.rmi. RmiProxyFactoryBean y org.springframework.remoting.rmi. RmiServiceExporter Clase.

RmiServiceExporter

Proporciona servicios de exportación para objetos RMI. Puede acceder a este servicio a través de RMI común o RmiProxyFactoryBean.

RmiProxyFactoryBean

Es el fábrica de bean de proxy Rmi. Publica un servicio de proxy que se puede usar como referencia de bean.

Ejemplo de integración de Spring y RMI

Vamos a ver los pasos simples para integrar la aplicación Spring con RMI:

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


Archivos jar necesarios

Para ejecutar este ejemplo, necesita cargar:

jar de Spring Core jar de Spring Remoting jar de Spring AOP

Descargue todos los archivos jar de Spring, incluyendo core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm, etc.


1Calculation.java

Este es un interfaz simple que contiene un método de conjunto de datos multidimensionales.

paquete com.w3codebox;
public interface Calculation {
int cube(int número);
}

2CalculationImpl.java

Esta clase proporciona la implementación del interfaz Calculation.

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

3applicationContext.xml

En este archivo xml, definimos la clase CalculationImpl y RmiServiceExporter La clase define el bean. Necesitamos proporcionar valores para las propiedades siguientes de la clase RmiServiceExporter.

servicio 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的实例。但是您需要先运行此类以运行示例。

paquete 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("Esperando solicitudes");
}
}

6、Client.java

Esta clase obtiene la instancia de Calculation y llama a este método.

paquete 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));
}
}