搞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的更多相关文章

  1. Java回顾之Spring基础

    第一篇:Java回顾之I/O 第二篇:Java回顾之网络通信 第三篇:Java回顾之多线程 第四篇:Java回顾之多线程同步 第五篇:Java回顾之集合 第六篇:Java回顾之序列化 第七篇:Java ...

  2. java的RMI(Remote Method Invocation)

    RMI 相关知识RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络 ...

  3. Java 使用RMI

    Java 使用RMI Java使用序列化的方式,可以实现远端的方法调用,在分工合作时非常方便.本文记录使用java标准库实现rmi 一.服务端 结构 . ├── pom.xml ├── src │   ...

  4. Java回顾之ORM框架

    这篇文章里,我们主要讨论ORM框架,以及在使用上和JDBC的区别. 概述 ORM框架不是一个新话题,它已经流传了很多年.它的优点在于提供了概念性的.易于理解的数据模型,将数据库中的表和内存中的对象建立 ...

  5. Java回顾之多线程同步

    在这篇文章里,我们关注线程同步的话题.这是比多线程更复杂,稍不留意,我们就会“掉到坑里”,而且和单线程程序不同,多线程的错误是否每次都出现,也是不固定的,这给调试也带来了很大的挑战. 在这篇文章里,我 ...

  6. Java的RMI远程方法调用实现和应用

    最近在学习Dubbo,RMI是很重要的底层机制,RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制.使用这种机制,某一 ...

  7. 分布式架构探索 - 1. RPC框架之Java原生RMI

    1. 什么是RPC RPC(Remote Procedure Call)即远程过程调用,指的是不同机器间系统方法的调用,这和 同机器动态链接库(DLL)有点类似,只不过RPC是不同机器,通过网络通信来 ...

  8. 简单实现Java的RMI——远程方法调用

    一.RMI简介: 说到RMI就不得不说RPC了. RPC:(Remote Procedure Call),远程过程调用. RMI(Remote Method Invocation),远程方法调用. R ...

  9. java回顾(项目前期的基本准备)

    一.     基础回顾 1   集合 1.1 集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList:  数组实现, 查 ...

随机推荐

  1. CAD二次开发---导入外部文件中的块并输出预览图形(五)

    思路: 1)首先要定义一个数据库对象来表示包含块的文件,改数据库对象会被加载到内存中,但不会被显示在CAD窗口中. 2)调用Database类的ReadDwgFile函数将外部文件DWG文件读入到新创 ...

  2. Zip压缩和解压缩

    这个功能完全依靠一个第三方的类,ICSharpCode.SharpZipLib.dll,只是在网上搜了大半天,都没有关于这个类的详细解释,搜索的demo也是各种错误,感觉作者完全没有跑过,就那么贸贸然 ...

  3. iOS中“返回”操作相关

    在程序中,总会设置“返回”按钮,但不可能在每一个控制器中都去设置一次“返回”按钮,那如何设置全局的“返回”按钮呢? 首先自定义一个导航控制器,在tabBarController中添加子控制器时,使用这 ...

  4. 高性能 CSS3 动画

    注:本文出自腾讯AlloyTeam的元彦,文章也可以在github上浏览.请尊重版权,转载请注明来源,多谢-- 高性能移动Web相较PC的场景需要考虑的因素也相对更多更复杂,我们总结为以下几点: 流量 ...

  5. mysql下载安装

    1.下载 下载地址:http://dev.mysql.com/downloads/mysql/ 根据电脑配置来选,我选了 windows(x86,64-bit),ZIP Archive这个,点击Dow ...

  6. android开机过程简单描述

    1 开机引导bootloader,相当于电脑开机启动bios 2 引导过后可以进入三种模式:fastboot, recovery, linux kernel.前两种跟版本升级相关,正常开机进入linu ...

  7. 最喜欢的算法(们) - Levenshtein distance

    String Matching: Levenshtein distance Purpose: to use as little effort to convert one string into th ...

  8. 【转】JavaScript下对去重算法的优化

    本人较懒,直接将链接附上: JavaScript下去重算法优化:http://www.linuxde.net/2013/02/12062.html

  9. 【转】IE劫持原理 BHO

    为什么"浏览器劫持"能够如此猖狂呢?放眼众多论坛的求助贴,我们不时可以看到诸如"我的IE被主页被改了,我用杀毒工具扫了一遍都没发现病毒,我把主页改回自己的地址,可是一重启 ...

  10. 图解HTTPS

    看到一篇讲解HTTPS交互的文章,讲得很清楚,备忘一下 来自无网不剩的博客 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTP ...