RMI是实现将服务暴露给远程的一种手段,通过RMI可以实现应用的跨服务器,跨JVM的方法活对象的调用。
首先实现RMI服务器端
创建远程方法调用参数类
package com.spring.pojo;
import java.io.Serializable;
/**
* 该类主要用于RMI参数的传递
* @author zhy
*
*/
public class PersonVo implements Serializable {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
然后创建远程访问接口,该接口用于导出远程服务
package com.spring.inter;
import com.spring.pojo.PersonVo;
/**
* 定义远程访问接口,供导出远程服务使用
* @author zhy
*
*/
public interface ILogPersion {
public Object getPersion(PersonVo persionVo);
}
接着创建远程接口实现,用于完成真正业务逻辑
package com.spring.inter.imp;
import com.spring.inter.ILogPersion;
import com.spring.pojo.PersonVo;
public class LogPersion implements ILogPersion {
public Object getPersion(PersonVo persionVo) {
return persionVo;
}
}
最后完成服务器端远程spring文件配置
<!-- 配置远程服务开始 -->
<bean id="logPerson" class="com.spring.inter.imp.LogPersion"/>
<bean id="logPersionService" class="org.springframework.remoting.rmi.RmiServiceExporter">
<!-- 指定serviceName,同客户端访问 -->
<property name="serviceName">
<value>LogPerson</value>
</property>
<!-- 注册真正的service实现到代理javaBean中 -->
<property name="service">
<ref bean="logPerson"/>
</property>
<!-- 指定服务实现的接口-->
<property name="serviceInterface">
<value>com.spring.inter.ILogPersion</value>
</property>
<!-- 避免与默认RMI端口冲突,修改端口 -->
<property name="registryPort">
<value>1200</value>
</property>
</bean>
总结服务器端:服务器端之所以不需要实现Remote接口等等,就是依赖于spring配置文件中的RmiServiceExporter,RmiServiceExporter将烦琐的RMI服务器端操作进行了封装。
开发spring RMI客户端
首先将服务器端的RMI 参数类和业务接口拷贝到调用应用中
即将PersonVo和ILogPersion拷贝过来
然后完成调用端spring文件的配置
<bean id="LogPerson" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<value>rmi://localhost:1200/LogPerson</value>
</property>
<property name="serviceInterface">
<value>com.spring.inter.ILogPersion</value>
</property>
</bean>
最后创建mian方法进行调用
public static void main(String[] args) {
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
PersonVo vo = new PersonVo();
vo.setFirstName("z");
vo.setLastName("hy");
ILogPersion person = (ILogPersion)factory.getBean("LogPerson");
System.out.println( ((PersonVo)person.getPersion(vo)).getFirstName());
}
RMI的缺点:如果网络中存在防火墙,则RMI无能为力了,而且RMI要求必须是用java实现的。
分享到:
相关推荐
- **配置Spring**:在服务端,我们可以利用Spring的依赖注入(DI)特性来管理RMI接口的实现,确保其生命周期和依赖关系得到妥善处理。 - **暴露RMI服务**:最后,服务端需要启动RMI服务器,监听特定端口,等待...
通过Spring的Bean工厂,我们可以将RMI服务声明为Spring Bean,这样就可以利用Spring的依赖注入来配置和服务。此外,Spring AOP可以用于在远程方法调用前后添加拦截逻辑,如日志记录、性能监控等。 具体到这个压缩包...
2. 实现RMI服务:接着,创建接口的实现类,如`MyServiceImpl`。 ```java @Service("myService") public class MyServiceImpl implements MyService { @Override public String doSomething(String input) { ...
在IT行业中,远程方法调用(Remote Method ...通过上述整合,我们可以构建一个健壮的分布式系统,利用Spring的高级特性管理和控制RMI服务,同时利用RMI实现跨JVM的通信。这样的系统既易于维护,又具有高度的可扩展性。
**Spring RMI 集成详解** 在Java开发中,远程方法调用(Remote Method Invocation,RMI)是一种...通过正确配置服务器和客户端,可以实现高效的远程调用,同时利用Spring的管理能力,提高代码的可维护性和可测试性。
Spring RMI允许开发者利用Spring的依赖注入(DI)和面向切面编程(AOP)特性来创建和管理RMI服务。通过Spring的RMI支持,我们可以方便地定义服务接口和服务实现,然后通过配置文件或注解将它们暴露为RMI服务。这样做...
总之,Spring RMI是Java开发者在构建分布式系统时的重要工具,通过它,可以更高效地管理和调用远程服务,同时也充分利用了Spring框架的强大功能。通过学习和实践,你可以提升自己的技能,更好地应对复杂的企业级应用...
在Spring框架中,我们可以利用Spring的Remoting模块来简化RMI的配置和管理。以下是在Spring中使用RMI的关键步骤: 1. **定义远程接口**:创建一个Java接口,声明所有需要远程调用的方法。这个接口需要继承`java.rmi...
Spring RMI(Remote Method Invocation)是Java平台上的远程方法调用技术,结合Spring框架的特性,使得在分布式...通过Spring RMI,我们可以轻松地构建可扩展的分布式系统,利用其强大的特性来提升系统的灵活性和性能。
在Spring中,我们可以利用Spring的Remoting支持简化这些步骤。 1. **创建远程接口**: - 首先,你需要定义一个Java接口,这个接口将被远程调用。接口中的方法会成为远程方法。例如,你可以创建一个名为`...
此外,在微服务架构中,不同服务间的通信也可以利用 Spring RMI 来实现。 #### 五、总结 Spring RMI 提供了一种简单有效的方式来管理和使用 RMI 服务。它极大地简化了 RMI 的开发流程,使得开发者能够更加专注于...
Spring RMI(Remote Method Invocation)...通过分析服务端和客户端的源码,我们可以深入理解如何在Spring框架下实现和使用RMI远程调用,这对于任何希望在分布式系统中利用Spring的开发者来说都是一份宝贵的参考资料。
通过这种方式,我们可以在分布式系统中轻松地实现服务的远程调用,同时利用Spring的依赖注入和AOP功能,提高代码的可维护性和可测试性。在实际应用中,还可能需要考虑安全性、性能优化和异常处理等问题,但本文已为...
通过定义服务接口、实现远程服务、注册服务以及在客户端创建代理,开发者可以轻松地在Spring应用中利用RMI进行跨JVM通信。这种技术对于构建大型、分布式的Java应用程序至关重要,尤其是在微服务架构中。
Spring框架作为Java企业级应用的基石,它提供了与RMI集成的能力,使得开发者可以方便地利用RMI来构建高可扩展性的系统。本文将深入探讨Spring整合RMI的相关知识点。 首先,理解RMI的基本概念是关键。RMI允许一个...
上文我们利用Spring rmi实现了Spring的远程访问(Spring 实现远程访问详解——rmi),本文主要讲解利用HttpInvoke实现远程访问。 Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和...
在"springRMI示例"中,我们将探讨如何利用Spring框架实现RMI来构建一个能够执行引擎机功能的系统,用于业务处理。 ### Spring RMI 的核心组件 1. **Remoting Beans**: 在Spring中,远程接口和其实现被定义为普通的...
总结来说,Spring RMI简单应用主要是利用Spring框架简化了RMI的配置和调用,使得在分布式环境中实现远程方法调用更加方便。通过定义远程接口、实现远程接口并在服务器端注册,以及在客户端创建代理类来调用远程方法...
2. **实现RMI接口**:创建接口的实现类,如`RemoteServiceImpl.java`: ```java public class RemoteServiceImpl implements IRemoteService { // 实现接口中的所有方法 } ``` 3. **配置RMI服务器**:在Spring...