首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java RMI学习笔记RMI(Remote Method)Java RMI 威力强大Java远程消息交换协议JRMP使用RMI优点RMI网络模型网络模型RMI的工作原理RMI远程调用步骤:编码实现j

使用RMI优点 RMI大大增强了java开发分布式应用的能力,例如可以将计算方法复杂的程序放在其他的服务器上,主服务器只需要去调用,而真正的运算是在其他服务器上进行,最后将运算结果返回给主服务器,这样就减轻了主服务器的负担...而客户端代理则负责使用网络协议与服务器进行联系。 网络模型 ?...存根位于客户端机器上,而非服务器上。 2、参数编组:存根会将远程方法所需的参数打包成一组字节,对参数编码的过程就称为参数编组。...; importjava.rmi.Naming; importjava.rmi.RemoteException; importjava.rmi.registry.LocateRegistry;...注册服务器上,并命名为RHello //绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的) Naming.bind("rmi://localhost

1.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java RMI

    Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术。 大名鼎鼎的EJB都是建立在rmi基础之上的,现在还有一些开源的远程调用组件,其底层技术也是rmi。...下面通过一个简单的例子来说明RMI的原理和应用,下面这个例子是一个简单HelloWorld,但已涵盖RMI的核心应用与开发模式。...服务,并将远程对象注册到RMI注册表中。...注册服务器上,并命名为RHello //绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的)             Naming.bind(...服务端程序: 运行RMI客户端程序: 总结: 从上面的过程来看,RMI服务器的IP地址和端口依赖很紧密,但是在开发的时候不知道将来的服务器IP和端口如何,但是客户端程序依赖这个IP和端口。

    52940

    【Java】已解决:`java.rmi.NotBoundException:RMI`

    场景示例: 假设我们有一个远程接口MyRemoteService,并且在服务器端实现了这个接口。在启动服务器时,我们将这个服务绑定到RMI Registry上。...的常见原因包括: 服务未绑定:在服务器端,服务没有正确绑定到RMI Registry。...例如,服务器在异常情况下未能启动或在绑定之前已经关闭。 名称不匹配:客户端查找的名称与服务器端绑定的名称不一致。...五、注意事项 在编写RMI相关代码时,注意以下几点可以有效避免java.rmi.NotBoundException: 确保服务绑定:在服务器端启动时,确保服务正确绑定到RMI Registry,并打印日志以确认绑定成功...RMI Registry管理:在服务器端,确保RMI Registry已经启动,并且绑定操作发生在Registry可用之后。

    10610

    Java安全-RMI

    RMI 概念 RMI的过程,就是用JRMP协议去组织数据格式,然后通过TCP进行传输,从而达到远程方法调用。 RMI(Remote Method Invocation):远程方法调用。...如果我们能访问RMI Registry服务,如何对其攻击? 如果我们控制了目标RMI客户端中Naming.lookup的第一个参数(也就是RMI Registry的地址),能不能进行攻击?...这样可以防止客户端删除或覆盖服务器的远程注册表中的条目。但是,查找操作是任意主机都可以进行的。...1099/"); for (String obj:objs) { System.out.println(obj); } } } 那么只要目标服务器上存在一些危险方法...RMI通信数据包:Java-Sec-RMI-rmi.pcapng.zip 参考文章: Java安全漫谈 基于Java反序列化RCE - 搞懂RMI、JRMP、JNDI Java安全之RMI反序列化 RMI

    84430

    RMI原理及实现

    注册服务器服务器上运行的一种服务,它帮助客户端远程地查找和访问服务器上的对象。一个对象只有导出来后,然后才能实现RMI包中的远程接口。...RMI需要使用占位程序和框架,占位程序在客户端,框架在服务器端。在调用远程方法时,我们无需直接面对存储有该方法的机器。 在进行数据通讯前,还必须做一些准备工作。...在Java中,只要一个类extends了java.rmi.Remote接口,即可成为存在于服务器端的远程对象,供客户端访问并提供一定的服务。...下面给出一个简单的RMI 应用,其中类图如下:其中IService接口用于声明服务器端必须提供的服务(即service()方法),ServiceImpl类是具体的服务实现类,而Server类是最终负责注册服务器远程对象...注册服务器上,并命名为service02 //绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的)

    87580

    分布式对象之客户服务器角色以及RMI初探

    我可以调用一个远程对象帮我得到我所要的信息,并作为响应的一部分返回 引出客户与服务器角色 分布式编程的基本思想就是:客户端请求服务器服务器根据请求处理得到客户端需要的信息返回 ?...sub object; double price = centralWarehouse.getPrice("xxx") 存根一般位于客户端,他知道如何通过网路与服务器进行交互。...参数编组 RMI编程模型 建立一个简单的实例--->远程对象表示为一个仓库,客户端通过远程仓库获取产品价格 1....double getPrice(string desciption) throws RemoteException; } 服务器提供的类 // WarehouseImpl.java import java.rmi...服务器通过自居注册服务注册至少一个远程对象 // 下面代码构造并实现一个对象 import java.rmi.* import java.naming.* public class WarehouseServer

    81810

    java rmi与dubbo

    分布式:一个业务分拆成多个子业务,部署在不同的服务器上,多半是为了业务解耦,不同的业务可以分别部署,互不干扰,只在需要时相互调用,提升效率。...集群:同一个业务,部署在多个服务器上,多半是为了解决高并发,高访问量,提高系统性能。...(RMI的具体用法这里不说了,在我另一篇文章中已经有讲解了) 知道了分布式,就知道RMI到底用来干嘛的了,就是用来让不同业务的子系统之间进行服务调用,例如A系统要调用B系统的某个方法,就可以用RMI实现...但是RMI本身并没有集群的功能,就是同一个业务部署了多台服务器,他只会根据你配置的ip地址,端口去调用其中一台,不会去调用另外的,所以, 怎么去有规则的调用另外的服务器就是负载均衡的工作了,这需要你自己实现...总结:RMI能实现分布式服务,但单凭他自己不支持集群。

    43630

    Java RMI 远程代码执行漏洞

    0x01 漏洞描述 - Java RMI 远程代码执行 - Java RMI服务是远程方法调用,是J2SE的一部分,能够让程序员开发出基于JAVA的分布式应用。...在RMI的通信过程中,默认使用序列化来完成所有的交互,如果该服务器Java RMI端口(默认端口1099)对公网开放,且使用了存在漏洞的Apache Commons Collections版本,就可以在该服务器上执行相关命令...0x02 漏洞等级 威胁级别 高危 中危 低危 0x03 漏洞验证 使用Nmap工具对目标服务器端口扫描,探测发现Java RMI服务端口号。...syn-ack ttl 64 Java RMI 输入目标地址端口,使用工具远程执行系统命令。.../pan.baidu.com/s/1i4gatlzs9mAoCocyAmnHNw 提取码: 35cs 上述利用工具不支持多命令拼接执行,可以在vps上设置好监听地址后,使用如下方法反弹shell获取服务器权限

    2.1K60

    Attacking Java RMI via SSRF

    ,但是对该对象的调用会被转发到RMI服务器,这表明Java RMI使用了面向对象的RPC机制,其中本地对象用于消费远程服务,这种面向对象的RPC实现给人以本地对象和远程服务之间强耦合的印象,这使得SSRF...RMI的情况下握手并不重要,因为RMI服务器从底层TCP流中一个接一个地读取数据,这允许客户机从一开始就发送所有需要的数据,而不需要等待任何服务器响应,下图再次显示了RMI协议,但这次是如何在SSRF...The ObjID Problem 在Java RMI上执行SSRF攻击需要客户端预先知道需要发送到RMI服务器的所有数据,这对于众所周知的具有固定ObjID值的RMI服务是可能的,例如:RMI注册表...SSRF攻击,参数为路径http://172.17.0.2:8000中的url RMI注册表在远程服务器上监听localhost:1090 容易被RMI注册表反序列化绕过的过时Java版本 RMI应用程序的类路径中提供了...注册表进行反序列化攻击,应用服务器上的Java版本已经为注册表通信实现了反序列化过滤器,但是它容易受到已知的反序列化过滤器旁路的攻击,这些bypass通过创建到攻击者控制的服务器的出站RMI连接来工作,

    96220

    CAS单点登录-关于服务器超时以及客户端超时的分析 (十)

    cas服务器超时主要指的是TGT(ticket granting ticket)超时,如果TGT时间到期,则需要进行重新登录。默认是2小时。...也就是说,如果服务器超时时间设置的过短,并不会起作用,还是要等客户端超时才行。...鉴于以上结论,客户端和服务器超时时间设置应该为: CAS-Server(TGT)超时时间 >= CAS-Client的超时时间 4. 一个站点超时,其他站点集中被注销了吗?...超时超时 webApp1、webApp2都不会重新登录 未超时 超时 超时 webApp1、webApp2都不会重新登录 超时 超时超时 webApp1会重新登录、webApp2不会重新登录...超时超时 超时 webApp1不会重新登录、webApp2会重新登录 超时 超时 超时 webApp1会重新登录、webApp2会重新登录

    3.8K20

    你知道怎么攻击RMI吗?

    0x01 前言 上一章介绍了rmi的基本概念,以及浅显的提了一下rmi的利用点。这一章将结合具体的代码与实践来讲解攻击rmi的方式。...0x02 利用反序列化攻击RMI 这也是我们在上文中提到的攻击方式,这个攻击有两个前提: rmi服务端提供了接收Object类型参数的远程方法 rmi服务器的lib或者说classpath中有存在pop...其实这种攻击方式还是攻击的registry(应该是吧),如果registry与远程对象提供服务器不在同一主机上,那么就要注意我们攻击的是registry而不是远程对象提供服务器,但是一般Registry...与远程对象提供服务器都是同一主机。...如果是不在同一主机,又想攻击远程对象提供服务器,那么就不能用上述调用bind方法的方式,而是需要满足一开始提到的那两个条件,并根据真实情况另外编写exp。

    1.2K30
    领券