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

Integração do Spring com RMI

O Spring RMI permite que você publique serviços através da infraestrutura RMI.

O Spring usa org.springframework.remoting.rmi. RmiProxyFactoryBean e org.springframework.remoting.rmi. RmiServiceExporter Classe.

RmiServiceExporter

Fornecimento de serviços de exportação para objetos RMI. Pode ser acessado através do RMI comum ou RmiProxyFactoryBean.

RmiProxyFactoryBean

É o fábrica de bean do proxy Rmi. Ele expõe o serviço de proxy que pode ser usado como referência de bean.

Exemplo de integração Spring e RMI

Vamos ver os passos simples para integrar o aplicativo Spring com RMI:

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


Arquivos jar necessários

Para executar este exemplo, você precisa carregar:

Arquivo jar do Spring Core Arquivo jar do Spring Remoting Arquivo jar do Spring AOP

Baixe todos os arquivos jar do Spring, incluindo core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm, etc.


1Calculation.java

Este é um simples interface que contém um método multidimensional.

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

2CalculationImpl.java

Esta classe fornece a implementação da interface Calculation.

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

3applicationContext.xml

Neste arquivo xml, definimos para a classe CalculationImpl e RmiServiceExporter A classe define o bean. Precisamos fornecer valores para as propriedades da classe RmiServiceExporter.

Serviço 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

Neste arquivo xml, definimos RmiProxyFactoryBean Definiu o bean. Você precisa definir duas propriedades deste 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

Ele apenas obtém a instância de ApplicationContext. Mas você precisa executar este classe antes de executar o exemplo.

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("Aguardando solicitações");
}
}

6、Client.java

Esta classe obtém uma instância de Calculation e chama este método.

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