1.创建远程接口及声明远程方法(HelloInterface.java)
package com.unmi;
import java.rmi.*;
/**
* 远程接口必须扩展接口java.rmi.Remote
*/
public interface HelloInterface extends Remote
{
/**
* 远程接口方法必须抛出 java.rmi.RemoteException
*/
public String say() throws RemoteException;
}
2.实现远程接口及远程方法(继承UnicastRemoteObject)Hello.java
package com.unmi;
import java.rmi.*;
import java.rmi.server.*;
/**
* 扩展了UnicastRemoteObject类,并实现远程接口 HelloInterface
*/
public class Hello extends UnicastRemoteObject implements HelloInterface
{
private String message;
/**
* 必须定义构造方法,即使是默认构造方法,也必须把它明确地写出来,因为它必须抛出出RemoteException异常
*/
public Hello(String msg) throws RemoteException
{
message = msg;
}
/**
* 远程接口方法的实现
*/
public String say() throws RemoteException
{
System.out.println("Called by HelloClient");
return message;
}
}
3. 启动RMI注册服务,并注册远程对象(HelloServer.java)
package com.unmi;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class HelloServer
{
/**
* 启动 RMI 注册服务并进行对象注册
*/
public static void main(String[] argv)
{
try
{
//启动RMI注册服务,指定端口为1099 (1099为默认端口)
//也可以通过命令 $java_home/bin/rmiregistry 1099启动
//这里用这种方式避免了再打开一个DOS窗口
//而且用命令rmiregistry启动注册服务还必须事先用RMIC生成一个stub类为它所用
LocateRegistry.createRegistry(1099);
//创建远程对象的一个或多个实例,下面是hello对象
//可以用不同名字注册不同的实例
HelloInterface hello = new Hello("Hello, world!");
//把hello注册到RMI注册服务器上,命名为Hello
Naming.rebind("Hello", hello);
//如果要把hello实例注册到另一台启动了RMI注册服务的机器上
//Naming.rebind("//192.168.1.105:1099/Hello",hello);
System.out.println("Hello Server is ready.");
}
catch (Exception e)
{
System.out.println("Hello Server failed: " + e);
}
}
}
4. 客户端查找远程对象,并调用远程方法(HelloClient)
package com.unmi;
import java.rmi.Naming;
public class HelloClient
{
/**
* 查找远程对象并调用远程方法
*/
public static void main(String[] argv)
{
try
{
HelloInterface hello = (HelloInterface) Naming.lookup("Hello");
//如果要从另一台启动了RMI注册服务的机器上查找hello实例
//HelloInterface hello = (HelloInterface)Naming.lookup("//192.168.1.105:1099/Hello");
//调用远程方法
System.out.println(hello.say());
}
catch (Exception e)
{
System.out.println("HelloClient exception: " + e);
}
}
}
5. 执行程序:启动服务HelloServer;运行客户端HelloClient进行调用
(1)打开一个Dos窗口执行命令 java com.unmi.HelloServer 启动服务HelloServer
E:workspaceTestRMIbin>java com.unmi.HelloServer
Hello Server is ready.
运行成功则可以看到 Hello Server is ready
(2)打开另一个Dos窗口执行命令 java com.unmi.HelloClient 运行客户端程序
E:workspaceTestRMIbin>java com.unmi.HelloClient
Hello, world!
调用成功则可以看到 Hello, world!
并且在启动服务端的窗口中看到紧跟 Hello Server is ready. 打印出
Called by HelloClient
分享到:
相关推荐
SpringRMI小例子代码,仅供参考。SpringRMI小例子代码,仅供参考。
闲来无事,做了个Spring RMI的小例子,非常易懂。
NULL 博文链接:https://dolphin-ygj.iteye.com/blog/539379
NULL 博文链接:https://sharron5.iteye.com/blog/794531
最简单 最有效而且是最易懂的rmi理解例子
rmi简单例子,service实例和clent实例
spring RMI 简单例子
RMI例子,可以试试看
RMI应用开发小例子源码.rar RMI应用开发小例子源码.rar RMI应用开发小例子源码.rar
Java的远程方法(RMI)例子,有兴趣 ,可以下载学学!EJB底层用的就是Java的RMI
现在虽然我们很少用到RMI进行编程,但是做为Java一个最早的分布式解决方案,我们还是有了解的必要,从例子开始吧!
rmi的例子,rmi的例子,rmi的例子,rmi的例子
RMI的例子和做作录象 其中有个例子是聊天室的 大家不要光下不顶啊!!!
数据库系统概论分布式调用RMI例子程序分布式调用RMI例子程序分布式调用RMI例子程序分布式调用RMI例子程序
最简单的RMI入门好例子,看看远程调用的效果吧,直接在eclipse下导入就可以运行。
java远程调用rmi 实现小例子,将imp.zip包放到myeclipse工程里,即可运行客户端以及服务端
通过这个例子可以大概了解RMI的很多机制
说明的是用在客户端输入两个数字,在服务器端实现其加法运算,然后返回结果给客户端的rmi例子,这个例子较为复杂。此例子经过本人的调试通过。欢迎大家享用。
自己收集了一些跑得通的教程,并自己整理给出了,入门例子。包括:最原生的使用javac和rmic的例子;还有进一步的,使用IDM,用代码代理原生rmic...还有RMI和Spring整合的例子。 另外附有:例子说明 和 一些简单的教程。
java rmi小例子源代码 ,运行Reg.java ,再执行Client客户端代码就能看效果。如果在不同jvm下执行,注意接口定义包路径客服端和服务端必须保持一致。 客服端包含文件有服务端接口的定义文件。