Java RMI远程方法调用

本文介绍 Java RMI (Remote Method Invocation) 的基本概念与使用方法,并通过一个简单的示例演示如何实现远程对象调用。该示例包括远程接口定义、接口实现、服务端启动及客户端调用等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

java RMI(Remote Method Invocation),java远程方法调用,能够让在某个 Java虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。这种机制给分布计算的系统设计、编程都带来了极大的方便。

简单例子:

1.定义远程接口

 
import java.rmi.Remote;
 
import java.rmi.RemoteException;
 
 
 
public interface Helloextends Remote{
 
 
 
public String sayHello(Stringname) throws RemoteException; 
 
}

2.实现远程接口

import java.rmi.RemoteException;
 
import java.rmi.server.UnicastRemoteObject;
 
 
 
public class HelloImpl extends UnicastRemoteObjectimplements Hello {
 
 
 
protected HelloImpl()throws RemoteException {
 
super();
 
}
 
 
 
@Override
 
public String sayHello(Stringname)throws RemoteException {
 
return name;
 
}
 
 
 
}

3.编写服务端

public class HelloServer {
 
public static void main(String[]args) { 
 
         try{ 
 
            Hello h =new HelloImpl(); 
 
 
 
            //创建并导出接受指定port请求的本地主机上的Registry实例。 
 
            //LocateRegistry.createRegistry(12312); 
 
 
 
            /** Naming 类提供在对象注册表中存储和获得远程对远程对象引用的方法
 
             *  Naming 类的每个方法都可将某个名称作为其一个参数,
 
             *  该名称是使用以下形式的 URL 格式(没有 scheme 组件)的 java.lang.String:
 
             *  //host:port/name
 
             *  host:注册表所在的主机(远程或本地),省略则默认为本地主机
 
             *  port:是注册表接受调用的端口号,省略则默认为1099,RMI注册表registry使用的著名端口
 
             *  name:是未经注册表解释的简单字符串
 
             */ 
 
            //Naming.bind("//host:port/name", h); 
 
            LocateRegistry.createRegistry(12312);
 
            Naming.bind("rmi://localhost:12312/Hello",h); 
 
            System.out.println("HelloServer启动成功"); 
 
        }catch(Exceptione){ 
 
            e.printStackTrace(); 
 
        } 
 
    } 
 
}

4.编写客户端

import java.rmi.Naming;
 
 
 
public class HelloClient {
 
public static void main(String[]args) throws Exception {
 
Hello h = (Hello) Naming.lookup("rmi://localhost:12312/Hello");
 
System.out.println(h.sayHello("hello rmi"));
 
}
 
}

5.运行

5.1.需要调用rmic命令运行在HelloImpl的class文件

如果是eclipse中:在bin目录输入这段命令

rmic com.test.rmi.HelloImpl

5.2 运行服务端

java com.test.rmi.HelloServer

5.3 运行客户端

java com.test.rmi.HelloClient

打印输出:hello rmi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

terrybg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值