Java Rmi 远程方法调用

Java远程方法调用(RMI)技术详解 Java RMI(远程方法调用)采用三层架构实现分布式通信,包含注册表服务、服务端和客户端三大核心组件。服务端通过导出远程对象并绑定到注册表,客户端通过接口契约查找并调用远程方法。RMI采用租约机制管理远程对象生命周期,通过引用计数和定期续租实现分布式垃圾回收。开发时需要严格分离服务端与客户端代码,通过模块化部署确保安全性,并注意注册表必须与服务器同机部署。RMI架构隐藏了底层网络通信细节,使远程调用语法与本地调用保持一致,同时处理了对象定位、参数序列化和异常处理等分布式环境下的复杂问题。 阅读详情

一: 服务端  暴露服务

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 * 1.定义远程接口,必须继承Remote接口,
 * 2.远程调用的方法必须抛出RemoteException异常 
 */
public interface ISayHello extends Remote {
	
	/**
	 * @param name
	 * @return
	 * @throws RemoteException  远程调用方法必须抛出RemoteException
	 */
	public String doSayHello(String name) throws RemoteException;
}

 

import java.rmi.RemoteException;
import com.xx.service.ISayHello;

/**
 * 远程接口实现
 */
public class ChinaSayHello implements ISayHello {

	public String doSayHello(String name) throws RemoteException {
		return "您好," + name;
	}
}
import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;

import com.xx.service.ISayHello;
import com.xx.service.impl.ChinaSayHello;

/**
 * 
 * 暴露远程服务
 */
public class ServerMain {
	
	public static void main(String[] args) {
		//创建远程对象
		ISayHello sayHello = new ChinaSayHello();
		//url
		String serviceUrl = "//localhost:9999/sayhello";
		//java 默认对口是1099
		final int registryPort = 9999;
		//暴露服务
		exporter(sayHello, registryPort, serviceUrl);
	}
	
	/**
	 * 暴露服务
	 * @param object
	 * @param registryPort
	 * @param serviceUrl
	 */
	public static void exporter(Remote object,int registryPort, String serviceUrl) {
		int servicePort = 0;
		try {
			UnicastRemoteObject.exportObject(object, servicePort);
			LocateRegistry.createRegistry(registryPort);
			Naming.bind(serviceUrl, object);
			System.out.println("绑定成功.");
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (AlreadyBoundException e) {
			e.printStackTrace();
		}
	}
}


二:客户端  远程方法调用

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

import com.xx.service.ISayHello;

/**
 * 客户端
 */
public class ClientMain {
	
	public static void main(String[] args) throws RemoteException {
		// 查找远程对象 
		ISayHello sayHello= getObject(ISayHello.class, "rmi://localhost:9999/sayhello");
		// 远程方法调用
		System.out.println(sayHello.doSayHello("张三"));
	}
	
	public static <T> T getObject(Class<T> clazs, String serviceUrl) {
		try {
			Object object = Naming.lookup(serviceUrl);
			return clazs.cast(object);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
		throw new RuntimeException();
	}
}


 

Java RMI(Remote Method Invocation)远程方法调用 详解 远程方法调用 Remote Method Invocation是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。 编写一个RMI的步骤 定义一个远程接口,此接口需要继承java.rmi.Remote 开发远程接口的实现类 创建一个server并把远程对象注册到端口 创建一个client查找远程对象,调用远程方法 实例 定义一个远程接口 public... 阅读详情

相关推荐

对于Java RMI 远程方法调用的理解

前言 RMI 是前进路上不得不学的一个重点知识。 最近有点迷茫,希望有大哥能指条路。 什么是RMI 远程方法调用 RMI(Remote Method Invocation),是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。 Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过

Vicl1fe的博客 357

rmi远程调用被拒绝_Java基础--RMI

RMI (Remote Method Invocation,远程方法调用)是Java一组拥护开发分布式应用程序的API,用于不同虚拟机间的通信,核心是远程对象RMI通信模型:1、客户端调用辅助对象stub上方法2、stub对调用信息(变量、方法)打包,网络发给服务端辅助对象3、(1.2前)skeleton将stub送来的信息解包,找到被调方法的对象及本身4、调用服务端对象上的方法,将结果返回给sk...

weixin_39599081的博客 430

5、探索Java远程方法调用(RMI)

本文深入探讨了Java远程方法调用(RMI)的基本概念、实现细节及其在实际项目中的应用,包括分布式计算、银行账户管理系统的示例。同时,文章还介绍了RMI的安全机制以及RMI-IIOP的高级应用,帮助读者全面掌握这项关键技术。

weixin_42515340的博客 300

java远程调用(rmi)常见的两个错误

java的 rmi远程调用给分布式编程带来极大的方便,在使用rmi过程中eclipse开发平台会提示一些错误,可能是因为遗漏了需要注意的地方。

孙悟空空的专栏 9817

从时序博弈到数据稳定:CS1237驱动中的信号滤波与卡尔曼实践

本文探讨了CS1237高精度ADC驱动在复杂工业环境中的信号处理挑战,重点介绍了一阶滤波与自适应卡尔曼滤波算法的实践应用。通过参数优化和动态调整策略,有效提升了数据稳定性和抗干扰能力,为嵌入式系统在噪声环境下的精密测量提供了可靠解决方案。

rnn9storyteller的博客 863

2019年数学建模美赛经验总结

北京时间2019年1月29号上午9时,数模美赛结束。美赛结束已经10多天了,我在这次竞赛中负责建模和编程,趁现在记忆还比较清晰,写下这篇博客记录第一次参加数学建模美赛的经历。 补更:2019年4月20日公布成绩,笔者最终获得了美赛一等奖 目录 1、基本情况 2、选题 3、分工合作 4、论文写作 5、建模 6、编程 7、入门资源 ...

Smallactive 7万+

Android studio使用javah找不到类文件问题

必须的进入项目所在的java目录下,使用cmd输入javah -jni xxx 才有用,其他目录下都会报找不到类文件错误。

zhangxp_xml的博客 1824

三维Copula建模进阶:从对称、嵌套到Pair-Copula(C-Vine/D-Vine)到底怎么选?

本文深入探讨三维Copula建模的进阶策略,包括对称Archimedean、嵌套结构和Vine Copula(C-Vine/D-Vine)的选择方法。通过对比数学特性、计算复杂度和实际应用案例,提供了一套针对金融风险分析等场景的决策框架,帮助分析师根据数据特征选择最优模型。

weixin_27038701的博客 436

被一个java.rmi.RemoteException引发的窘境,“坚持”就有希望!

      今天第一次使用rmi编写远程方法调用写程序,我事先想测试rmi编写的简单例子,代码如下:  /* *Create on Dec 31, 2008 *Copyright 2009 Quasar20063501.All Rights reserved * *weizhaozhe */ //wzz.server.Server.javapackage wzz.server;im

魏照哲的专栏 1万+

Cocos Creator发布微信小游戏:深度定制与去除默认加载页面的实践指南

本文详细介绍了如何使用Cocos Creator发布微信小游戏时去除默认加载页面的实践方法。通过修改构建配置和重写启动逻辑,开发者可以自定义加载体验,提升品牌一致性。文章还提供了进阶优化方案和常见问题解决方案,帮助开发者实现更专业的微信小游戏发布流程。

weixin_27972919的博客 568

信息学奥赛一本通高手训练1680:序列

题目 代码 #include<cstdio> #include<iostream> #include<cmath> #define LL long long using namespace std; const LL N = 1400000+7; const LL mod = 1e9+7; int n, t; LL pos[N], sum[N], ans[N]; struct node{ LL ll, rr; }a[N]; int main(){ p

qingfeixueyue的博客 468

Java RMI远程方法调用详解

远程方法调用RMI(Remote Method Invocation),是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。 Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使

AI吃大瓜的博客 3万+

告别‘线束丛林’:手把手拆解车身域控制器(BCM/PEPS/网关)的硬件选型与PCB布局要点

本文深入解析车身域控制器的硬件选型与PCB布局要点,涵盖主控MCU选择、通信接口设计、电源架构优化及EMC设计等关键环节。通过实战案例分享,帮助工程师解决高密度集成带来的电源完整性、热管理和信号隔离挑战,实现更稳定高效的汽车电子系统设计。

weixin_42567279的博客 395

Java—RMI:远程方法调用,基于TCP协议

Java—RMI:远程方法调用,基于TCP协议 RMI简介: ​ 远程方法调用,是JDK1.2推出的功能,它可以 实现Java应用中可以像调用本地方法一样调用另一个服务器中Java应用(JVM)中的内容。 ​ RMI是Java语言的远程调用,无法实现跨语言。 执行流程: ​ Registry(注册表,注册中心,远程过程的定位,而不是调用。协议式的远程访问,rmi协议请求方式不在是post或get了,而是接口别名,可以随意起名。但是要保证这个接口是唯一的。同一个IP、同一个端口唯一。)是放置所有服务器

jiu_dian的博客 1730

OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战

【代码】OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战。

m0_67505153的博客 188

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

1.新建shp文件地理坐标系保持和影像一致,面类型2.打开属性表3.添加字段这里分类6类,点击添加值添加添加完毕开始人工选地物类型,制作数据集开始标注,标注的时候可以借助谷歌地图来看标记足够多的样本打开面转栅格工具设置nodata值为15。

热爱分享,热爱记录 2525

Java远程方法调用(RMI)

这学期上了《分布式系统》课程,内容主要是基于Java实现分布式计算,所以老师前几节课主要在给我们讲用Java做分布式可能会用到的一些技术。为了方便学习和记录,我将老师讲的内容结合资料做了一些整理,这一篇主要讨论Java远程方法调用(RMI)。 下面的内容主要翻译自Java官方文档。我使用的是Google翻译,翻完了以后如果有不太对的地方就手动调整了一下,难免有一些地方翻译得不是很清楚,欢迎指出,或直接查看官方文档原文。

Curren的博客 2760

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java RMI 远程方法调用

RMI 概念分析。RMI 使用场景分析。

一步一步往上爬 1000

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

RMI - Java远程方法调用

一、入门篇 Java RMI指的是远程方法调用(Remote Method Invocation). 它是一种机制, 能够让不同操作系统之间程序实现方法调用.  比如: 一个EJB可以通过RMI调用web上另一台机器上的EJB远程方法(EJB底层就是使用RMI). 二、RMI和webservice RMI是在TCP协议上传递可序列化的Java对象, 只能

技术人生 2831

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java RMI-远程方法调用

一、Java RMI概观      RMI英文全称为:Remote Method Invocation,中文意思为:远程方法调用。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。      RMI提供了客户辅助对象和服务辅助对象,为客户辅助对象创建和服务对象相同的方法。RMI的好处在于你不必亲自

tycoon的专栏 476

学习笔记:JAVA RMI远程方法调用简单实例

RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。使用这种机制,某一台计算机上的对象可以调用另外一台计算机上的对象来获取远程数据。RMI是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。在过去,TCP/IP套接字通讯是远程通讯的主要手段,但此开发方式没有使用面向对象的方式实现开发,在开发一个如此的通讯机制时往往令程序员感觉到乏味,对此RPC(Remote Procedure Call)

风尘浪子 2万+

java rmi:远程方法调用

Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。 我们知道远程过程调用(R...

bird_tp的博客 738

【Java】RPC与RMI,Java远程方法调用(RMI)

如何通过RMI实现远程过程调用 RPC与RMI,Java远程方法调用(RMI)

yuchangyuan5237的博客 757

java rmi调用方法_java RMI远程方法调用详解

RMI示例Java远程方法调用(RMI)提供了Java程序语言的远程通讯功能,这种特性使客户机上运行的程序可以调用远程服务器上的对象,使Java编程人员能够在网络环境中分布操作。创建一个简单的Java分布式远程方法调用程序可以按以下几个步骤操作,一、定义远程接口:在 Java 中,远程对象是实现远程接口的类的实例,远程接口声明每个要远程调用的方法。在需要创建一个远程对象的时候,我们通过传递一个接口...

weixin_39661881的博客 430

Java RMI 远程方法调用 (Remote Method Invocation)

本文来自于:http://yanguz123.iteye.com/blog/1570172 Java RMI 远程方法调用 (Remote Method Invocation) 博客分类:  Java   一、简介   RMI是远程方法调用的简称,象其名称暗示的那样,它能够帮助我们查找并执行远程对象的方法。通俗地说,远程调用就象将一个class放在A

illusion_Luna的专栏 1347
上一篇: mongodb- 安装
下一篇: Spring Rmi远程方法调用
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值