【Java Web开发学习】远程方法调用RMI
Java RMI 远程方法调用Remote Method Invocation
转载:http://www.cnblogs.com/yangchongxing/p/9078061.html
1、创建远程方法接口(必须继承自java.rmi.Remote接口)
package cn.ycx.date; import java.rmi.Remote;
import java.rmi.RemoteException; public interface DateRemote extends Remote {
public String now() throws RemoteException;
}
2、创建远程服务实现
远程对象必须实现java.rmi.server.UniCastRemoteObject类,该类的构造函数中将生成stub(存根)和skeleton(骨架), 这样才能保证客户端访问获得远程对象时,该远程对象将会把自身的一个拷贝以Socket的形式传输给客户端,此时客户端所获得的这个拷贝称为Stub(存根),而服务器端本身已存在的远程对象则称之为Skeleton(骨架)。其实此时的存根是客户端的一个代理,用于与服务器端的通信, 而骨架也可认为是服务器端的一个代理,用于接收客户端的请求之后调用远程方法来响应客户端的请求。
package cn.ycx.server; import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.text.SimpleDateFormat;
import java.util.Date; import cn.ycx.date.DateRemote; public class DateRemoteImpl extends UnicastRemoteObject implements DateRemote {
private static final long serialVersionUID = -4892445365627614558L;
protected DateRemoteImpl() throws RemoteException {
super();
}
@Override
public String now() throws RemoteException {
SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
return format.format(new Date());
}
}
3、启动远程服务
package cn.ycx.server; import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
// java cn.ycx.server.ServerTest
public class ServerTest {
//rmiregistry
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.createRegistry(1099);
registry.bind("dateRemote", new DateRemoteImpl());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("RMI Server is ready...");
}
}
4、创建客户端实现
package cn.ycx.client; import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException; import cn.ycx.date.DateRemote; // java -jar client.jar
public class ClientTest { public static void main(String[] args) {
DateRemote dateRemote;
try {
dateRemote = (DateRemote) Naming.lookup("rmi://192.168.1.190:1099/dateRemote");//
System.out.println(dateRemote.now());
} catch (MalformedURLException e) {
} catch (RemoteException e) {
} catch (NotBoundException e) {
}
}
}
导出为可执行jar
java -jar client.jar
运行结果:2018-05-23 17:26:58
【Java Web开发学习】远程方法调用RMI的更多相关文章
- 【Java Web开发学习】Spring发布RMI服务
[Java 远程服务]Spring发布RMI服务 转载:https://www.cnblogs.com/yangchongxing/p/9084066.html RmiServiceExporter可 ...
- 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor
[Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...
- 【Java Web开发学习】Spring MVC 使用HTTP信息转换器
[Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...
- 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener
[Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...
- 【Java Web开发学习】Spring MVC文件上传
[Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...
- 【Java Web开发学习】Spring MVC异常统一处理
[Java Web开发学习]Spring MVC异常统一处理 文采有限,若有错误,欢迎留言指正. 转载:https://www.cnblogs.com/yangchongxing/p/9271900. ...
- 【Java Web开发学习】Spring4条件化的bean
[Java Web开发学习]Spring4条件化的bean 转载:https://www.cnblogs.com/yangchongxing/p/9071960.html Spring4引入了@Con ...
- 【Java Web开发学习】Spring环境profile
[Java Web开发学习]Spring 环境profile 转载:http://www.cnblogs.com/yangchongxing/p/8890702.html 开发.测试.生产环境往往是不 ...
- 【Java Web开发学习】跨域请求
[Java Web开发学习]跨域请求 ================================================= 1.使用jsonp ===================== ...
- 【Java Web开发学习】Spring JPA
[Java Web开发学习]Spring JPA 转载:https://www.cnblogs.com/yangchongxing/p/10082864.html 1.使用容器管理类型的JPA JND ...
随机推荐
- Centos上通过shell脚本备份数据库
#!/bin/bash ds=`` list=`date +%Y`/`date +%m` dname="callme" eval "mkdir -p $list" ...
- 同时发起TCP连接
如果你的socket编程只限于创建SOCK_STREAM的socket,用connect-accept建立连接,然后就是recv,send.你就会惊奇tcp连接还可以不用accept. 上图为两个AF ...
- promise实现图片按照指定的加载顺序执行
promise实现图片按照指定的加载顺序执行,先加载第二张,再加载第一张,最后加载第三张 <!DOCTYPE html> <html lang="en"> ...
- 修改Linux克隆的物理地址 和 IP地址
实在不行就重新启动一下 才会改成 ech0 完成后文件配置环境变量 作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具.
- 国内开源C# WPF控件库Panuon.UI.Silver推荐
国内优秀的WPF开源控件库,Panuon.UI的优化版本.一个漂亮的.使用样式与附加属性的WPF UI控件库,值得向大家推荐使用与学习. 今天站长(Dotnet9,站长网址:https://dotne ...
- KFC-位置分页爬虫
import requests import json if name == 'main': #记录总数 raw_count=0 #查询页数 page=1 #存储数据 data=[] #判断有无数据条 ...
- udp协议以及socketserver
udb协议 udb协议也是一种协议,它和tcp相比既有缺点也有优点 udb协议所发送的数据可以理解为自带报头,所以他不会出现粘包的情况.但是udp数据只管发送而不管接收,也就是说udp会出现丢包的情况 ...
- 小白都会用的免配置 Aria2 图形界面版免费开源下载软件PDM
如今的迅雷真的越发让人失望,好好的下载软件变成了广告浏览器,最近又关停了“远程下载”功能,就算花钱加入会员,很多资源现在也不允许下载了,鸡肋的很. 然而除了 IDM.Folx.qBitorrent 等 ...
- VLAN实验5(在ensp上利用三层交换机实现VLAN间路由)
原理概述: VLAN将一个物理的LAN在逻辑上划分成多个广播域.VLAN内的主机间可以直接通信,而VLAN间不能直接互通. 在现实网络中,经常会遇到需耍跨VLAN相互访问的情况,工程师通常会选择一些方 ...
- mysql那些事(6) WHERE条件 字符串的引号
前言:所谓的坑,两个意思,一个是软件本身的bug,一个是使用者常犯的错误. phper在日常开发中经常和mysql打交道.特别是在没有分层的中小应用中,phper开发要关注sql语句的实现. 入正题, ...