看到设计模式代理模式时,有个RMI的例子,虽然概念上比较简单,但是自己动手写个例子验证一下。
依然是经典的 hello world,呵呵。
首先是一个客户端和服务端都需要的接口。
import java.rmi.*;
public interface MyRemote extends Remote {
String sayHello() throws RemoteException;
}
然后是一个接口的实现类。
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.LocateRegistry;
public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote {
public String sayHello() {
return "Server says, 'Hey, Connected!'";
}
public MyRemoteImpl() throws RemoteException {}
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(9998);
MyRemote service = new MyRemoteImpl();
Naming.rebind("RemoteHello", service);
System.out.println(service + " successfully bound to RemoteHello");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
最后是一个客户端调用类。
import java.rmi.*;
public class Client {
public static void main(String[] args) {
new Client().go();
}
public void go() {
try {
MyRemote service = (MyRemote) Naming.lookup("rmi://192.168.1.107:9998/RemoteHello");
String s = service.sayHello();
System.out.println(s);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
总共就这3个类。
编译:
进入java文件所在目录:
C:\Users\Administrator\Desktop\rmiExample>javac *.java
目录大概这个样子:
Client.class
Client.java
MyRemote.class
MyRemote.java
MyRemoteImpl.class
MyRemoteImpl.java
再使用rmic生成stub和skeleton类,注意加上-v1.1,不然不会生成skel类。
C:\Users\Administrator\Desktop\rmiExample>rmic -v1.1 MyRemoteImpl
生成如下2个文件
MyRemoteImpl_Skel.class
MyRemoteImpl_Stub.class
把如下类拷到另一台电脑上运行服务器端,也要有Java环境。
MyRemote.class
MyRemoteImpl.class
MyRemoteImpl_Skel.class
MyRemoteImpl_Stub.class
本机留着当作客户端机器,只保留如下3个文件,其余全部删掉。
Client.class
MyRemote.class
MyRemoteImpl_Stub.class
在服务器端电脑运行
java MyRemoteImpl
这一步如果注释掉MyRemoteImpl类的这一行,
// LocateRegistry.createRegistry(9998);
需要先开一个命令终端运行
rmiregistry 9998
再运行
java MyRemoteImpl
最后,见证测试结果的时候到了,在本机(作为客户端机器)运行
java Client
如果出现打印的
Server says, 'Hey, Connected. Ready to use.'
表示运行成功。而且本地没有MyRemoteImpl类,可以肯定这个结果是服务器机器上返回的结果。
分享到:
相关推荐
java rmi java rmijava rmi javajava rmi java rmi rmi
最简单 最有效而且是最易懂的rmi理解例子
现在虽然我们很少用到RMI进行编程,但是做为Java一个最早的分布式解决方案,我们还是有了解的必要,从例子开始吧!
NULL 博文链接:https://wondery.iteye.com/blog/435518
java RMI技术实现的网络聊天室 编译通过,很完整的。代码很有参考价值
java RMI
采用JAVA rmi,带图形界面,完全由自己实现的聊天室,具备基本的聊天功能,可以自己扩充功能
java rmi例子
检测javaRMI反序列化漏洞
NULL 博文链接:https://javapub.iteye.com/blog/1807349
一个简单的RMI例子Java源代码,用于学习理解RMI
java RMI实现代码。分为客户端和服务器端,有清楚的代码注释。
在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由于做的是富客户端应用,最终将技术选定在了RMI和Java-sockets两种之间,其中RMI的灵活性不高,客户端和服务器端都必须是java编写,但使用比较方便,...
Java编程rmi实例,给出远程方法调用技术在java方面的具体例子。
Java的远程方法(RMI)例子,有兴趣 ,可以下载学学!EJB底层用的就是Java的RMI
我的博客《Java中的RMI(远程方法调用)》的示例代码
JavaRMI.pdf
Java RMI 简单示例
最近在学习代理模式,用到了java rmi远程调用,包含服务端和客户端,之前一直没有接触过,学习了java rmi远程调用,一方面可以了解代理模式,一方面熟悉java低层的远程