English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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
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)); } }