RMI代码动态下载

java rmi java rmi java rmi java rmijava rmi javajava rmi java rmi rmi 立即下载

我看网上讲RMI应用时都是些比较老的文章,从前部署一个RMI应用有6个步骤:
(1)定义和实现远端接口中的参数
(2)定义和实现远端接口
(3)编写服务端代码
(4)编写客户端代码
(5)生成stub和skeltion ,并将stub打包到客户端jar中,将skeltion打包到服务端jar中
(6)启动rmiregistry , 并将服务注册到rmiregistry中,然后运行代码。
上边的步骤涉及到了好几个长串复杂的命令。。。
但在JDK5中使用了动态代理技术,实现了动态生成stub和skeltion类,从而省却了相当多的繁琐工作。(我这还是后来知道,我是说我这么简单就实现了RMI,跟网上说的咋区别那大。。。)

如此一来RMI成了相当轻量级的技术了,但还是会遇到繁琐的事情,比如代码动态下载,动态下载允许RMI应用动态从http后者ftp下载类定义的字节码(运行时加入参数-Djava.rmi.server.codebase=http://***/*.jar),就像是把远程的类加入本地的classpath一样,相当方便的技术。问题就是如果我们只是学习或做个简单的应用,为了部署一个RMI还要启用一个http或ftp服务,多么麻烦,谁都想只用启动程序就可以了,尤其是在调试的时候。当然如果只是在本地调试的话,可以用file://代替http,可是如果是个简单的应用必须用到http服务,但又不想兴师动众的启动一个http服务器的话JDK6的新特性之一http轻量级服务就派上用场了。
RMI代码动态下载其实就用到了HTTP协议的下载功能,所以,可以把这部分工作给一个简单的通用类就行了。如下:

下面是个简单的例子来说明代码的动态下载和上面类的使用方法。
服务端建立文件夹server。
首先是要动态下载的接口

然后是服务接口

两个接口的实现

启动服务

配置文件rmi.policy
grant  {
permission java.security.AllPermission;
};


下面就是客户端,建立文件夹client
我们只需要把客户端需要的接口User.class,Hello.class拷贝到classpath(即client目录下)就可以了,由于用到了代码动态下载,所以得获得许可,我们还需把rmi.policy也拷贝到环境中。

 

接下来执行Server,和Client,就可以看到结果了,如果我们改变UserImpl的实现,再次执行Client时,就会发现变化。

RMI实现代码动态下载 RMI代码动态下载,包含了个简单的http服务,直接就可以运行。 立即下载

相关推荐

如何解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.

解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE

2742

java.rmi下载_RMI:关于RMI文件上传下载的完整例子

RMI技术例子下面以一个例子说明怎么使用RMI技术。这个例子演示了怎样将一个文件上传到服务器和怎样将一个文件从服务器上下载下来。使用RMI技术共有6个步骤要走: (1)定义和实现远端接口中的参数 (2) 定义和实现远端接口 (3) 编写服务端代码 (4)编写客户端代码 (5)生成stub和skeltion ,并将stub打包到客户端jar中,将skeltion打包到服务端jar中 (6)启动rmi...

weixin_39825872的博客 418

ASTRA Toolbox学习笔记-Python

ASTRA Toolbox 是一个用于处理 X 射线相干散射和 X 射线传输成像的开源算法工具箱。本文档概述了该工具箱的基本概念。

hou9021的博客 8261

Java RMI 实现代码动态下载

 摘要:本译文将向你介绍Java<fontsize=-2>TMRMI动态类文件下载的应用,学习完本文,你将会对JavaTMRMI有进一步的认识。希望你能参考我的上一篇译文:开始学习Java RMI,远程方法调用-基础篇。你可以点击如下链接访问原文:Dynamic code downloading using Java<fontsize=-2>TM RMI,codebase tutori

博采众生 6924

CTF实战:从ECDSA签名漏洞到flag获取

本文详细解析了ECDSA签名算法在CTF比赛中的实战应用,重点探讨了随机数重用和参数泄露等常见漏洞。通过PWNHUB六月赛的例题,展示了如何从签名数据中恢复私钥并获取flag,同时提供了防御措施和实战技巧,帮助参赛者提升解题能力。

weixin_42706667的博客 277

Hermes+MemOS记忆系统:用SQLite构建可编辑AI个人认知资产

AI记忆不是简单延长上下文或叠加RAG,而是构建具备分层存储、混合检索与自然语言反馈能力的个人认知资产。其核心原理在于将用户交互痕迹(L1)、偏好策略(L2)、结构化世界模型(L3)和结晶化技能统一管理,实现记忆的可追溯、可修正、可进化。技术价值体现在降低token消耗、提升长程一致性、支持离线演进,并突破传统‘静态快照’式知识库局限。典型应用场景包括个人知识助手、客服工单分析Agent、研发文档理解系统等。本文聚焦Hermes Agent与MemOS深度集成方案,详解SQLite作为ACID底座支撑L1/

weixin_33623304的博客 434

攻击Java RMI方式

此节总结了打法以及对应的payload或者exp,按本文顺序来,方便健忘以及懒得敲命令的自己,也方便懒得看原理,直接找利用的各位(连代码都不想敲的话建议使用ysomap)探测RMI接口BaRMIe:NMap:略1234567攻击Object类型参数接口(仅示例,需要知道接口参数以及调用方式):try {1234567891011攻击非Object类型参数接口:1、mvn package 打好jar包。

技术超强的网络安全平台 224

信道估计之MMSE算法

信道估计之MMSE算法前言MMSE估计的原理总结 前言        前篇分析了LS信道估计算法,也说明了由于没有考虑SNR的影响,所以LS算法不适合在低信噪比的情况下使用。本篇来学习信道估计的另外一种常用的算法–MMSE。        为什么说LS没有考虑噪声大小的情况呢,因为LS算法使用的是实际观测量与估计观测量的误差,这并不能精确的代表估计量的真值与估计值的误

大白的博客 2万+

java 通知 客户端_java – 更新时从服务器到客户端的RMI通知

我正在写一个假的运送应用程序.客户端发送产品,服务器保留所有发送的产品.现在服务器 – 因为它只是虚拟的 – 每分钟更新产品的状态(SEND – > ACCEPTED – > SHIPPED – > RECEIVED),现在我希望服务器在更新状态时更新相应的客户端.我所讨论的大多数RMI信息只涉及客户 – >服务器..但我需要我的服务器为我的客户端调用这个..希望你们...

weixin_30405507的博客 276

STM32F4+FreeRTOS实战:手把手教你移植LWIP2.1.2(含LAN8720配置避坑指南)

本文提供了一份详尽的实战指南,手把手教你如何在STM32F4平台结合FreeRTOS实时操作系统,成功移植轻量级TCP/IP协议栈LWIP 2.1.2。文章重点剖析了硬件驱动层LAN8720 PHY芯片的配置要点与常见“坑点”,并深入讲解了LWIP与FreeRTOS的深度整合、关键配置及稳定性优化策略,旨在帮助开发者构建稳定可靠的产品级嵌入式网络功能。

ik678901234的博客 1063

Python 爬虫实战:爬取万方数据文献信息

本文介绍了基于Python爬虫技术合规获取万方数据文献信息的方法。通过分析万方数据的请求机制与反爬策略,采用requests库结合Session维持合法会话,实现了文献标题、摘要、作者等核心元数据的提取。文章详细讲解了Token验证、动态请求构造、JSON数据解析等关键技术,并提供了完整可运行代码。同时强调严格遵守《万方数据知识服务平台用户协议》,控制请求频率,仅限学术研究使用。该方案为万方数据文献信息获取提供了标准化解决方案,支持数据清洗、结构化存储及后续分析应用。

2503_91057718的博客 2138

Java RMI实现代码动态下载

 SiteFrom:http://www.linux521.com/2009/java/200904/1427.html摘要:本译文将向你介绍JavaTM RMI动态类文件下载的应用,学习完本文,你将会对JavaTM RMI有进一步的认识。希望你能参考我的上一篇译文:开始学习Java RMI,远程方法调用-基础篇。1.1. 1.概要Java平台一个重要的优点就是可以动态的从一个给定

linjx2004的专栏 1162

基于Simulink实现电动汽车电机驱动系统的建模与仿真

通过上述步骤,我们成功实现了基于Simulink的电动汽车电机驱动系统的建模与仿真。该系统能够全面评估电机驱动系统的性能,验证控制策略的有效性,并通过优化设计提高车辆的动力性和效率。引入智能预测:结合人工智能技术,实现更智能的控制策略。扩展功能:增加对多种电机类型的支持,提升系统通用性。实验验证:将仿真模型应用于实际硬件,进行实验验证,评估其在实际工况下的表现。

xiaoheshang_123的博客 317

Using the java.rmi.server.codebase Property

Dynamic code downloading using Java RMIDynamic code downloading using JavaTM RMI(Using the java.rmi.server.codebase Property)This tutorial is organized as follows: Starting out

jackoo的专栏 1537

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Error】Java RM相关错误:java.rmi.UnmarshalException: error unmarshalling arguments

便携codebase相关的Java RMI代码时遇到了如下错误。 运行参数: java \ -Djava.security.policy=jndi.policy \ -Djava.naming.provider.url=rmi://$ip:1099 \ -Djava.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory \ com.basics.RMI.DynamicCodeDownloading.MethodI

think_ycx的专栏 5081

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

RMI实现细节详解

2. RMI 概述 定义:Java远程方法调用(RMI)系统允许在一个Java虚拟机中运行的对象调用在另一个Java虚拟机中运行的对象的方法。RMI提供了用Java编程语言编写的程序之间的远程通信。 注:如果要连接到现有的IDL程序,应该使用Java IDL而不是RMI。 本文简要概述了RMI系统,然后介绍了一个完整的客户端/服务器示例,该示例使用RMI的独特功能在运行时加载和执行用户定义的任务。示例中的服务器实现了一个通用的计算引擎,客户端使用该引擎计算 [公式]符号的值。 3. 什么是 RMI 应用 3

THMAIL的博客 847

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

关于rmi的研究

关于rmi的研究 rmi有两个主要问题: 1. 调用如何从客户端传输到服务器端    这个问题的是通过stub来解决的,stub负责和服务器通信,将调用传输到服务器并接收    返回值 2. 由于stub类可以通过工具生成,但初始化必须在服务器端完成,所有如何将一个可用的    stub传输到客户端就是我们最关心的问题 注:在1.4中stub类是必须的,在5.0中使用Unica

pq258280920的专栏 487

RMI全面了解

RMI的入门 一 .RMI概述 RMI(Remote Method Invocation)     RMI是分布式对象软件包,它简化了在多台计算机上的JAVA应用之间的通信。必须在jdk1.1以上 RMI用到的类      java.rmi.Remote                   所有可以被远程调用的对象都必须实现该接口      java.rmi.server.U

mike_caoyong的专栏 1281

Java2 RMI 入门

Java2 RMI 入门<!--google_ad_client = "pub-8672584364535288";google_ad_width = 336;google_ad_height = 280;google_ad_format = "336x280_as";google_ad_type = "text_image";//2006-09-23: docin

1120

rmi动态下载

服务器端运行命令rmiregistry,然后java HelloServer(这两条命令都是在/root/Test/server/目录下运行的) 客户端运行命令java -Djava.rmi.server.codebase=http://192.168.2.51/ HelloClient 192.168.2.51 其中最后192.168.2.51是HelloServer所在host的ip地址,...

博采众长 179

Java远程方法调用(RMI)

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

Curren的博客 2760

RMI(Remote Method Invocation)原理浅析

现代的 网络和编程技术,让我们的资源共享从信息逐步迈向了硬件,你想到过吗?你可以把一个解密的任务放到远程的运行更快的,闲置的服务器上进行,最后把运算的结果返回来,你 所要做的就是提交任务。看到了吧,处理这些任务是远程的服务器。 Java的RMI的技术让这种实现变得非常的容易,本文就从基础性的东西讲解一下RMI的原理,有关安全和部署的问题,本文不加于讨论。 读过本文希望对你的学习有所帮助。 本...

u012005912的专栏 345

java远程方法调用(java RMI)

翻译原文:http://docs.oracle.com/javase/6/docs/technotes/guides/rmi/index.html 概要 java远程方法调用(javaRMI)技术使得程序猿能够创建基于java技术的分布式应用。即远端java对象的方法可以被另一个JVM的程序调用,即便此JVM位于另一个主机上。RMI不需要阶段类型,使用对象序列化就可以解析或分解参数,支持真

lh87522的专栏 821

An Overview of RMI Applications

An Overview of RMI Applications RMI applications often comprise two separate programs, a server and a client. A typical server program creates some remote objects, makes references to these objec

poijm 980

RMI动态下载类分析

  部署一个分布式应用可能会很困难,系统即使只运行其中的一部分,也必须安装所有的相关部分。对于一个局域网来说,这是很消耗时间的,虽然不会很困难。然而,当部署一个大规模应用且更新频繁的时候,部署过程会困难的多。动态下载是集成在RMI中的一项技术,试图使这个应用容易些。一:应用遇到的困难部署一个应用需要一下步骤:       1)配置服务器       2)向名字服务路径增加stu

neubigboy的专栏 646
上一篇: JDK6新特性三——XML相关
下一篇: RMI大文件传输的一种思路
chch87
博客等级 码龄19年 26粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值