java回顾rmi
搞java的不懂rmi好像说不过去。。 ,复习一遍。
参照http://www.iteye.com/topic/173909
http://lzj0470.iteye.com/blog/426760 非常详细
步骤
1 准备接口Interfase(需继承Remote)和实现类Clazz(继承UnicastRemoteObject实现Interfase)
2 server:创建Clazz,绑定Naming.rebind ("p1", p1); (端口默认是1099 ? )—— 如此简单!
3 client:通过Naming.lookup获取即可:PerfectTime p1 = (PerfectTime)Naming.lookup ("rmi://localhost:1099/p1");
4 打开jvm1 ,执行set classpath=D:\ws\testWS\java-basic\WebRoot\WEB-INF\classes——start rmiregistry——start java rmi.PerfectTimeServer
(set classpath 要先start rmiregistry——start java rmi.PerfectTimeServer执行,不然报Caused by: java.lang.ClassNotFoundException: rmi.PerfectTime——奇怪)
此时rmi会占用1099端口:

5 打开jvm2,执行set classpath=D:\ws\testWS\java-basic\WebRoot\WEB-INF\classes——rmic rmi.PerfectTimeImpl——java rmi.PerfectTimeClient
我本机测试的时候,其实不需要执行(set classpath=D:\ws\testWS\java-basic\WebRoot\WEB-INF\classes——rmic rmi.PerfectTimeImpl) 好奇怪。。
___ PerfectTimeClient显然是在jvm2中写好的,但,现在既然是远程,它便不应该和server端代码写在一块,应该独立编写。很重要一点是,需要在编写及运行PerfectTimeClient前,把PerfectTime接口放置本地(通过codebase? 这个还不太清楚,我是直接拷贝的),这有些不合常理,但是似乎也是必须的。。。
完毕!
启动apache,复制rmi下面的class,然后,执行java -Djava.rmi.server.codebase=http://127.0.0.1/test/ rmi.PerfectTimeClient
发现,没任何效果,似乎默认在某处已经有个codebase,永远都无需rmic rmi.PerfectTimeImpl了。。。嗯,应该是我jdk是高版本的原因。 stub都可以动态生成了
http://www.iteye.com/topic/161485
还是不清楚这样的java rmi是什么原理。。郁闷。。RMI的缺省实现是 JRMP(Java Remote Method Protocol) 看来得看一下底层源码才行
总结:
java的rmi使用起来还是比较简单的,就用到了 :
java.rmi.Remote 、 java.rmi.RemoteException 、 java.rmi.Naming 外加java自身提供的rmiregistry 、rmic
java回顾rmi的更多相关文章
- Java回顾之Spring基础
第一篇:Java回顾之I/O 第二篇:Java回顾之网络通信 第三篇:Java回顾之多线程 第四篇:Java回顾之多线程同步 第五篇:Java回顾之集合 第六篇:Java回顾之序列化 第七篇:Java ...
- java的RMI(Remote Method Invocation)
RMI 相关知识RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络 ...
- Java 使用RMI
Java 使用RMI Java使用序列化的方式,可以实现远端的方法调用,在分工合作时非常方便.本文记录使用java标准库实现rmi 一.服务端 结构 . ├── pom.xml ├── src │ ...
- Java回顾之ORM框架
这篇文章里,我们主要讨论ORM框架,以及在使用上和JDBC的区别. 概述 ORM框架不是一个新话题,它已经流传了很多年.它的优点在于提供了概念性的.易于理解的数据模型,将数据库中的表和内存中的对象建立 ...
- Java回顾之多线程同步
在这篇文章里,我们关注线程同步的话题.这是比多线程更复杂,稍不留意,我们就会“掉到坑里”,而且和单线程程序不同,多线程的错误是否每次都出现,也是不固定的,这给调试也带来了很大的挑战. 在这篇文章里,我 ...
- Java的RMI远程方法调用实现和应用
最近在学习Dubbo,RMI是很重要的底层机制,RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制.使用这种机制,某一 ...
- 分布式架构探索 - 1. RPC框架之Java原生RMI
1. 什么是RPC RPC(Remote Procedure Call)即远程过程调用,指的是不同机器间系统方法的调用,这和 同机器动态链接库(DLL)有点类似,只不过RPC是不同机器,通过网络通信来 ...
- 简单实现Java的RMI——远程方法调用
一.RMI简介: 说到RMI就不得不说RPC了. RPC:(Remote Procedure Call),远程过程调用. RMI(Remote Method Invocation),远程方法调用. R ...
- java回顾(项目前期的基本准备)
一. 基础回顾 1 集合 1.1 集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查 ...
随机推荐
- 老版mapreduce跑streaming作业多路输出的方法
1. 继承MultipleTextOutputFormat实现自己的输出类. 2. 重写generateFileNameForKeyValue方法,返回输出的名字,可通过"/"分割 ...
- 动态加载js文件
由于最近在弄echarts,关于地图类的效果,但是全国地图整体的js文件太大了,加载很耗费资源,所以要根据不同省份加载不同地区的js地图, 于是就想的比较简单, var script = docume ...
- java线程池初步理解
多线程基础准备 进程:程序的执行过程,持有资源和线程 线程:是系统中最小的执行单元,同一个进程可以有多个线程,线程共享进程资源 线程交互(同步synchronized):包括互斥和协作,互斥通过对象锁 ...
- iis6|iis7|配置URLRewriter|64位操作系统下|.net2.0|.net4.0|配置URLRewriter|Web.config配置详情
想必很多ASP.NET的码友们在IIS配置伪静态被严重纠结过不止一次两次,本园主经过多次站点伪静态配置,总结了一下,IIS版本:IIS 6.IIS 7,服务器:Windows Server 2003. ...
- 关于Java线程意外退出自动重启..
最近做项目使用到第三方推送功能,然后创建了一个线程用来循环读取队列中的数据,当队列为空时,则线程暂停2秒.一切都像想象中的辣么美好.可是在后面的测试中发现收不到推送的消息了,接着发现了原来推送的线程由 ...
- PowerPoint
工具/原料 PowerPoint 2007 百度经验:jingyan.baidu.com 一.PowerPoint2007基础知识 1 桌面快捷方式:也可以“开始”菜单→程序→Microsoft Of ...
- Log4j写日志文件使用详解
Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合 一.今天在使用commongs-logging.jar和log4j.properties来输出系统日志的时候,发 ...
- ubuntu安装hexo博客
ubuntu下安装hexo博客 一 安装git sudo apt-get install git 二 安装nodejs 官网下载linux安装包.tar.gz文件 解压 tar zxvf 这样变可以切 ...
- WebBench源码分析与心得
源码:https://github.com/EZLippi/WebBench 关键全局变量: speed 成功次数 failed 失败次数 bytes 接收字节数 benchtime 执行时长(秒 ...
- addScalar 显式指定返回数据的类型
sql: select a.id as 受理 from a SQLQuery sqlQuery=this.getSession().createSQLQuery(sb.toString()).addS ...