RMI远程方法调用示例
来源:互联网 发布:循环队列存储在数组 编辑:程序博客网 时间:2024/05/23 18:32
以前没有用过RMI,第一次接触,写的有什么问题还请指正
一、创建一个java工程
二、创建远程接口
定义一个远程接口,此接口必须继承Remote接口,其中需要远程调用的方法必须抛出RemoteException异常
public interface IHello extends Remote { /** * 简单的返回“Hello World!"字样 * @return 返回“Hello World!"字样 * @throws java.rmi.RemoteException */ public String helloWorld() throws RemoteException; /** * 一个简单的业务方法,根据传入的人名返回相应的问候语 * @param someBodyName 人名 * @return 返回相应的问候语 * @throws java.rmi.RemoteException */ public String sayHelloToSomeBody(String someBodyName) throws RemoteException; }三、实现远程接口
实现远程接口时要继承UnicastRemoteObject类
public class HelloImpl extends UnicastRemoteObject implements IHello { /** * 因为UnicastRemoteObject的构造方法抛出了RemoteException异常,因此这里默认的构造方法必须写,必须声明抛出RemoteException异常 * @throws RemoteException */ public HelloImpl() throws RemoteException { } /** * 简单的返回“Hello World!"字样 * @return 返回“Hello World!"字样 * @throws java.rmi.RemoteException */ public String helloWorld() throws RemoteException { return "Hello World!"; } /** * 一个简单的业务方法,根据传入的人名返回相应的问候语 * @param someBodyName 人名 * @return 返回相应的问候语 * @throws java.rmi.RemoteException */ public String sayHelloToSomeBody(String someBodyName) throws RemoteException { return "你好," + someBodyName + "!"; } }
四、创建RMI注册表,启动RMI服务,并将远程对象注册到RMI注册表中
public class HelloServer { public static void main(String args[]) { try { //创建一个远程对象 IHello rhello = new HelloImpl(); //本地主机上的远程对象注册表Registry的实例,并指定端口为8888,这一步必不可少(Java默认端口是1099),必不可缺的一步,缺少注册表创建,则无法绑定对象到远程注册表上 LocateRegistry.createRegistry(8888); //把远程对象注册到RMI注册服务器上,并命名为RHello //绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的) Naming.bind("rmi://localhost:8888/RHello",rhello); // Naming.bind("//localhost:8888/RHello",rhello); System.out.println(">>>>>INFO:远程IHello对象绑定成功!"); } catch (RemoteException e) { System.out.println("创建远程对象发生异常!"); e.printStackTrace(); } catch (AlreadyBoundException e) { System.out.println("发生重复绑定对象异常!"); e.printStackTrace(); } catch (MalformedURLException e) { System.out.println("发生URL畸形异常!"); e.printStackTrace(); } } }五、编写客户端测试一下
public class HelloClient { public static void main(String args[]){ try { // 在RMI服务注册表中查找名称为RHello的对象,并调用其上的方法 IHello rhello =(IHello) Naming.lookup("rmi://localhost:8888/RHello"); System.out.println(rhello.helloWorld()); System.out.println(rhello.sayHelloToSomeBody("zhangsan")); } catch (NotBoundException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }
好了,至此代码全部就完成了,运行代码,一个简单的远程方法调用示例就算完成了
- RMI远程方法调用示例
- RMI(远程方法调用)简单示例
- RMI,远程方法调用
- RMI远程方法调用
- rmi 远程方法调用
- RMI远程方法调用
- RMI远程方法调用
- RMI 远程方法调用
- rmi远程方法调用
- RMI 远程方法调用
- RMI远程方法调用
- RMI远程方法调用
- rmi远程接口调用示例
- RMI远程方法调用完整示例【java项目】
- RMI远程方法调用示例【基于Spring配置文件】
- 远程方法调用(RMI)原理与示例
- 远程方法调用------RMI技术
- RMI远程方法调用概述
- JAVA memcached初次接触
- 下划线式的Textbox
- relate to与associate with的区别
- 【转载】快速搞懂 SQL Server 的锁定和阻塞
- 自然语言处理相关书籍及其他资源
- RMI远程方法调用示例
- cronolog
- 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- 文件、文件夹的操作
- 图片缓存:浏览器刷新 和 304 Not Modified 与 If-Modified-Since 及 Cache-Control
- oracle 查看实例
- 禁用浏览器后退按钮
- Struts2与Struts1的对比
- 多态的实现