中间件实验报告

一、实验名称

远程过程调用

二、实验内容

利用RMI技术构件远程会话,两个客户端发送消息到服务器端,服务器中转发送给相应客户,进行远程会话。

三、实验目的

熟悉掌握RMI技术,理解其工作原理并能熟悉使用

四、实验环境

IDEA、JAVA JDK1.8

五、实验内容

RMI工作原理:服务器端提供服务,服务中要暴露可以调用的远程方法,以接口的形式表现,这样在客户端可以通过服务接口来调用远程方法,实现复杂的业务逻辑。在服务器端,首先要对接口中提供的方法实现,以便客户端调用能够完成一定的业务逻辑;接着需要生成Skeleton,在Skeleton中真正地实现了对商业方法的调用,完成了客户请求的调用的过程,将获取到的调用方法的结果通过序列化机制返回给客户端,进行应答。在客户端,通过Stub来接收服务器返回的数据(对象),即在这里进行了反序列化,也就是读取网络传输的字节流,进而进行重构。

在本次实验中,首先需要定义一个远程接口,远程接口必须继承java.rmi.remote接口,并声明自己的远程方法,为了处理远程方法发生时的各种异常,每一个远程方法必须抛出一个java.rmi.remoteException的异常,如下图所示:
图片1.png

之后,开发接口的实现类RmiChat,在此类中,需要实现Chat接口中定义的方法,考虑到聊天功能的同步性以及双向性,这里需要设置一个监听事件来作为发送消息和接收消息的应答,同时在本地9000端口注册rmi对象并开始监听。

如图为设置监听器与注册rmi对象的部分代码:
图片2.png

最后再按照老师所给样例实现server端与client端即可。测试结果如下:
图片3.png

图片4.png

其中,绿色字体表示自己发出的消息,箭头指向字体表示收到消息。

六、实验总结

经过本次实验,了解到了rmi技术的工作原理以及实现过程。在完成实验的过程中,要注意Client与Server注册的端口号要一致,同时要注意policy.txt文件的配置问题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容