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

Integrazione Spring e RMI

Spring RMI ti permette di rendere pubblici i servizi attraverso l'infrastruttura RMI.

Spring utilizza org.springframework.remoting.rmi. RmiProxyFactoryBean e org.springframework.remoting.rmi. RmiServiceExporter Classe.

RmiServiceExporter

Fornisce servizi di esportazione per gli oggetti RMI. Questo servizio può essere accessibile tramite RMI standard o RmiProxyFactoryBean.

RmiProxyFactoryBean

È un bean di fabbrica per l'agente RMI. Esso pubblica un servizio di代理 che può essere utilizzato come riferimento Bean.

Esempio di integrazione Spring e RMI

Vediamo i semplici passaggi per integrare un'applicazione Spring con RMI:

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


File jar necessari

Per eseguire questo esempio, è necessario caricare:

File jar di Spring Core File jar di Spring Remoting File jar di Spring AOP

Scarica tutti i file jar di Spring, inclusi core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm, ecc.


1, Calculation.java

Questo è un'interfaccia semplice che contiene un metodo per i set di dati multidimensionali.

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

2, CalculationImpl.java

Questa classe fornisce l'implementazione dell'interfaccia Calculation.

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

3, applicationContext.xml

In questo file xml, definiamo CalculationImpl classe e RmiServiceExporter La classe definisce un bean. Dobbiamo fornire valori per le seguenti proprietà della classe RmiServiceExporter.

servizio 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

In questo file xml, definiamo RmiProxyFactoryBean Definisce il bean. È necessario definire due proprietà di questa classe.

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

Semplicemente ottiene l'istanza di ApplicationContext. Ma è necessario eseguire questa classe prima di eseguire l'esempio.

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("In attesa di richieste");
}
}

6、Client.java

Questa classe ottiene l'istanza di Calculation e chiama questo metodo.

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