服务器之间使用rmi,如本地方法调用,可直接访问缓存
来源:互联网 发布:寻找质数的算法 python 编辑:程序博客网 时间:2024/05/17 22:35
这几天想学习rmi的使用,网上查找的绝大部分都是在同一个项目调用的,个人感觉意义不大,不然只在同项目调用如何使rmi实现分布式。有一个链接的回答是把需要共用的接口打包,分别让服务端和客户端引用这个包,就可以实现跨项目调用rmi。目前尝试成功运行,下面贴代码
首先建立公用项目,也就是要暴露的接口给客户端调用(项目都使用了maven,方便依赖,只是为了实现这个功能,具体并没有配置)
具体代码(需要实现的业务逻辑方法在公用接口添加):
package rmi;import java.rmi.Remote;import java.rmi.RemoteException;public interface RmiServerIntf extends Remote { public String getMessage() throws RemoteException;}注意:这里需要继承Remote,声明此方法是暴露的rmi方法,同时需要抛出RemoteException,具体我还没有深入了解
服务器项目结构
接下来是服务器代码
package server;import java.rmi.Naming;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.server.UnicastRemoteObject;import rmi.RmiServerIntf;public class RmiServer extends UnicastRemoteObject implements RmiServerIntf {public static final String MESSAGE = "Hello World"; public RmiServer() throws RemoteException { super(0); } public String getMessage() { return MESSAGE; } public static void main(String args[]) throws Exception { System.out.println("RMI server started"); try { LocateRegistry.createRegistry(1099); System.out.println("java RMI registry created."); } catch (RemoteException e) { System.out.println("java RMI registry already exists."); } RmiServer obj = new RmiServer(); Naming.rebind("//localhost/RmiServer", obj); System.out.println("PeerServer bound in registry"); }}运行即启动了rmi服务端,监控客户端调用
运行成功控制台打印
客户端项目结构
最后是客户端代码
package client;import java.rmi.Naming;import rmi.RmiServerIntf;public class RmiClient { public static void main(String args[]) throws Exception { RmiServerIntf obj = (RmiServerIntf)Naming.lookup("//localhost/RmiServer"); System.out.println(obj.getMessage()); }}运行客户端,打印服务端返回的数据
至此就全部完成了,这只是在本地运行的,后续测试两台服务器之间通讯
=========================================================
第一次写blog,排版方面需要学习,希望可以帮到读者们,整个项目的关键在于公用的接口需要打包,然后客户端和服务端依赖这个包
最后是maven的依赖
需要客户端和服务端添加依赖
<dependencies> <dependency> <groupId>rmi-interfaces</groupId> <artifactId>rmi-interfaces</artifactId> <version>0.0.1</version> </dependency> </dependencies>
==========================================================================
贴上项目代码,经测试,可以在两台服务器上进行通讯,相当于调用本地方法,非常方便,这个项目也算是我走进分布式的一小步,继续努力
https://github.com/chenyinghui/rmi-interfaces.git
https://github.com/chenyinghui/rmi-client.git
https://github.com/chenyinghui/rmi-server.git
- 服务器之间使用rmi,如本地方法调用,可直接访问缓存
- UILabel 行间距方法 可直接调用
- 使用RMI实现远程方法调用
- 使用Spring RMI调用远程方法
- RMI远程方法调用使用简介
- 关于weblogic 访问应用直接使用ip就可到达的配置方法
- 如可访问注册表
- 使用本地cookie缓存,模拟访问
- datagridview可直接使用的美观方法
- RMI,远程方法调用
- RMI远程方法调用
- rmi 远程方法调用
- RMI远程方法调用
- RMI远程方法调用
- RMI 远程方法调用
- rmi远程方法调用
- RMI 远程方法调用
- RMI远程方法调用
- 百练1251:丛林中的树
- 牛客网---2016---蘑菇街投篮游戏
- mongoDB基本方法详情
- JavaScript的学习(四)--循环语句
- 十种常见的排序算法
- 服务器之间使用rmi,如本地方法调用,可直接访问缓存
- canvas实现粒子涂鸦效果
- 分享一个修改过的Sha1加密算法的Java实现
- Java-模拟电梯运行
- 12000字揭秘阿里连环炮面试
- Oasys.ADC+Alp+MassMotion+Pdisp+Safe
- XYNUOJ-1780-小测3 问题G区间覆盖
- Eclipse中代码全部变成灰色像被注释了一样的情况
- 怎么走路