Spring整合RMI
时间:2022-07-22
本文章向大家介绍Spring整合RMI,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
经常使用Java的一定知道RMI,当需要远程调用服务的是否,Java内嵌的RMI是非常有用的。但是创建调用RMI的服务是很麻烦的,Spring简化了RMI的使用,不用抛出RemoteException异常的特定RMI类,只需实现服务功能的pojo即可。
服务端使用了org.springframework.remoting.rmi.RmiServiceExporter
RmiServiceExporter把任何Spring管理的Bean输出成一个RMI服务。通过把Bean包装在一个适配器类中工作。适配器类被绑定到RMI注册表中,并且将请求代理给服务类。
客户端使用了org.springframework.remoting.rmi.RmiProxyFactoryBean
客户端的核心是RmiProxyFactoryBean,包含serviceURL属性和serviceInterface属性。
通过JRMP访问服务。JRMP JRMP:java remote method protocol,Java特有的,基于流的协议。
Spring-RMI
- 实现服务端
- 创建接口
public interface IRmiServer {
public boolean test();
}
2.实现该方法
public class RmiServerImpl implements IRmiServer {
@Override
public boolean test() {
System.out.println("调--服务端");
return true;
}
}
3.在Spring的配置文件中配置RMI
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.5//EN" "file:/usr/local/tomcat_report/lib/spring-beans-2.0.dtd">
<beans>
<!-- rmi -->
<bean id="rmiService" class="com.cayden.rmi.impl.RmiServerImpl">
</bean>
<bean id="remoteRmiService" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName">
<value>remoteService</value>
</property>
<property name="service" ref="rmiService" />
<property name="serviceInterface">
<value>com.cayden.rmi.IRmiServer</value>
</property>
<property name="registryPort">
<value>9400</value>
</property>
<property name="servicePort">
<value>9401</value>
</property>
</bean>
</beans>
启动服务端
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("rmi服务端启动");
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
}
- 创建客户端
- 使用服务端的接口文件
public interface IRmiServer {
public boolean test();
}
2.在Spring的配置文件中添加rmi远程调用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.5//EN" "file:/usr/local/tomcat_report/lib/spring-beans-2.0.dtd">
<beans>
<!-- rmi远程调用 -->
<bean id="testRmiService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<value>rmi://127.0.0.1:9400/remoteService</value>
</property>
<property name="serviceInterface">
<value>com.cayden.rmi.IRmiServer<<value>
</property>
</bean>
</beans>
3.调用
public class TestRmi {
public static void main(String[] arg) {
System.out.println("rmi客户端开始调用");
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
IRmiServer rmi=(IRmiServer)ctx.getBean("testRmiService");
rmi.test();
System.out.println("rmi客户端调用结束");
}
}
- Windows安装和使用zookeeper
- 使用MagicAjax 实现无刷新Webparts
- Python 项目实践一(外星人入侵小游戏)第五篇
- Python 项目实践一(外星人入侵小游戏)第三篇
- WordPress自定义栏目运用实例 VI:设置外链缩略图/特色图像
- Python 项目实践一(外星人入侵小游戏)第二篇
- IBatisNet配置
- WordPress设置评论到达一定数量后自动关闭评论功能
- Python 项目实践一(外星人入侵)第一篇
- 外媒:域名Covermate.com超35万终端交易
- 移除WordPress 管理后台的主题编辑功能
- 百度区域链开放平台“BaaS”启用了二级子域名chain.baidu.com
- Qt界面UI之QML初见(学习笔记四)
- 清新唯美的jQuery天气预报插件(网页天气预报插件)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- TensorFlow2.X使用图片制作简单的数据集训练模型
- Android高性能日志写入方案的实现
- MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(收藏系列)
- 想后台运行没想到导致磁盘满了
- 来看一道"简单的"C语言面试题
- 这行代码的打印结果确实让人迷惑!
- 如何实现一个高效的启发式算法?(VRPTW篇)
- Ubuntu Server搭建Hyperledger Fabric 2.1学习环境
- 辛辛苦苦学会的 webpack dll 配置,可能已经过时了
- 【程序中的数学】利用德摩根定律简化布尔运算
- Conjob For hybris
- ListView通用泛型适配器
- Android实现C/S聊天室
- OpenCV4.4 CUDA编译与加速全解析
- 如何利用Kotlin实现极简回调