利用RMI实现在多台服务器之间的资源共享

2023-11-09

    RMI(Remote Method Invocation),RMI是分布式对象软件包,它简化了在多台计算机上的JAVA应用之间的通信。JDK1.2以上都支持这个功能。有了RMI就可以实现不同服务器之间的通信。也就是多个JVM(Java Virtual Machine)之间的通信。操作远程服务器的对象就像操作本地对象那么简单。

    在规模稍大的应用中,一般都会有多台AP服务器。但我们的数据服务器,邮件服务器,文件服务器可能只有一台。因此数据服务器,邮件服务器,文件服务器的负荷可能会比较大。

    为了控制有限资源,比如同一时间的送信数不能够超过100封,数据库的访问连接数不能超过100个等等。这个如何实现呢?如果没有RMI的话,是比较难以想象的。因为怎么样才能够取到另外一个JVM的对象,或者怎么样才能把自己的对象交给另外一个JVM。

    比如上面的送信数的控制,我们所有的AP服务器上发生的送信动作都通过RMI把任务交给一台发送中心(固定为某台服务器)。发送中心通过线程POOL来实现同时送信数的控制。数据库的连接控制也一样,在AP服务器想要访问数据库的话,通过RMI从连接控制中心(固定为某台服务器)取得连接,然后访问数据库。

 

   RMI主要用到的类

      java.rmi.Remote 所有可以被远程调用的对象都必须实现该接口

      java.rmi.server.UnicastRemoteObject 所有可以被远程调用的对象都必须扩展该类

 

   一般开发的时候,创建RMI的步骤大概有以下几步。

  1、定义一个远程接口的接口,该接口中的每一个方法必须声明它将产生一个RemoteException异常。

  2、定义一个实现该接口的类。

  3、使用RMIC程序生成远程实现所需的辅助类。

  4、创建一个服务器,用于发布2中写好的类。

  5. 创建一个客户程序进行RMI调用。

  6、启动rmiRegistry并运行远程服务器和客户程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用RMI实现在多台服务器之间的资源共享 的相关文章

  • 为什么要实现finalize()?

    我已经阅读了很多 Java 新手问题finalize 令人困惑的是 没有人真正明确表示 Finalize 是一种不可靠的清理资源的方法 我看到有人评论说他们用它来清理连接 这真的很可怕 因为接近保证连接关闭的唯一方法是最后实现 try ca
  • 是否可以使 java.lang.invoke.MethodHandle 与直接调用一样快?

    我正在比较性能MethodHandle invoke以及直接静态方法调用 这是静态方法 public class IntSum public static int sum int a int b return a b 这是我的基准 Stat
  • getResourceAsStream(file) 在哪里搜索文件?

    我很困惑getResourceAsStream 我的包结构如下 src net floodlightcontroller invoked getResourceAsStream here resources floodlightdefaul
  • 显示JVM中当前运行的所有线程组和线程

    所以我的任务是显示所有线程组以及当前在 JVM 中运行的属于这些组的所有线程 输出时应首先显示线程组 然后在下面显示该组中的所有线程 这是针对所有线程组完成的 目前 我的代码将仅显示每个线程组 然后显示每个线程 但我不确定如何达到我所描述的
  • JVM HotSpot 上的 Java 异常计数器

    我想知道是否可以在不更改应用程序代码的情况下记录 JVM 级别上发生的每个异常 我所说的每个异常是指捕获和未捕获的异常 我想稍后分析这些日志并按异常类型 类 对它们进行分组 并简单地按类型对异常进行计数 我正在使用热点 也许有更明智的理由这
  • 哪种语言(在 JVM 上运行)最适合创建 DSL?

    我们需要创建复杂的固定长度和可变长度字符串 这些字符串可能代表客户资料 订单等 你们建议使用哪种基于 JVM 的编程语言 想法是让最终用户使用此 DSL 创建字符串 所以我正在寻找验证 代码完成等 Groovy http docs code
  • STS 无法在我的计算机上启动

    我试图在 eclipse 上设置 Spring mvc 项目 基本项目进展顺利 但是使用 Restful 服务 Jersey 等开始出现许多与依赖项相关的错误 所以我打算转到STS 我正在使用 STS 2 9 2 它给我 无法创建java虚
  • HotSpot使用的Mark-Compact算法是什么?

    当阅读 Mark Compact 章节时垃圾收集手册 https rads stackoverflow com amzn click com 1420082795 提出了一系列替代方案 但其中大多数看起来很旧 理论上 例如 2 指压缩和 L
  • java.library.path 中没有字体管理器

    以下代码在我的桌面上运行得很好 BufferedImage image new BufferedImage width height BufferedImage TYPE INT RGB Graphics g image getGraphi
  • 在intellij中为java启用ssl调试

    从我的问题开始 上一期尝试通过 tls ssl 发送 java 邮件 https stackoverflow com questions 39259578 javamail gmail issue ready to start tls th
  • 在 HP Load Runner 的 VuGen 中加载 javai.dll 时出现错误

    当我尝试在 HP load runner 的 VuGen 中编译一个简单的脚本时 无法启动 JVM 并出现以下错误 Java VM Internal Error Getting Error Loading javai dll 我在用着 HP
  • Java GuardedString - 用于加密的随机密钥是否存储在 Java 堆内存中?如果不是,那么密钥保存在哪里?

    Oracle 的 org identityconnectors common security GuardedString 要转换为 GuardedString 的原始数据需要由 EncryptorImpl class 随机生成的加密密钥
  • 强制jvm返回本机内存[重复]

    这个问题在这里已经有答案了 我时不时地运行需要大量内存的 eclipse 任务 因此 当任务运行时 jvm 会消耗大约 2 3GB 的 RAM 这是可以的 但是一旦 jvm 占用了该内存 它就不会释放它 并且我遇到了一种情况 堆中已用内存约
  • Java 类:匿名类、嵌套类、私有类

    有人能解释一下Java中匿名类 嵌套类和私有类之间的区别吗 我想知道与每个相关的运行时成本以及每个编译器的方法 这样我就可以掌握哪个最适合用于例如性能 编译器优化的潜力 内存使用以及其他 Java 编码人员的普遍可接受性 我所说的匿名类是指
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • 测量 tomcat 的排队请求数

    因此 使用tomcat 您可以设置acceptCount值 默认为100 这意味着当所有工作线程都忙时 新连接被放置在队列中 直到队列满 之后它们被拒绝 我想要的是监视此队列中项目的大小 但无法确定是否有办法通过 JMX 获取此值 即不是队
  • 调整 Java 类以提高 CPU 缓存友好性

    在设计java类时 对于实现CPU缓存友好性有哪些建议 到目前为止我学到的是应该尽可能多地使用 POD 即 int 而不是整数 这样 在分配包含对象时 数据将被连续分配 例如 class Local private int data0 pr
  • 使用 libjvm.so 时出现 Sigsegv Java 致命错误

    我正在做重启测试Sles12sp2 using STAF v3 4 24一段时间后我收到此错误 A fatal error has been detected by the Java Runtime Environment SIGSEGV

随机推荐

  • Excel转CSV格式

    注意 CSV文件导出来的 可以理解为 就是一个 普通的文件 但至于使用什么样的软件打开就是另一马事了 比如Excel打开后 出来 自动过滤了数字前面的0 这玩意程序控制不到 那是Excel的事情 CSV不是Excel文件切记 只不过用表格软
  • Cuda 11/10的Dockerfile

    说明 如果NVIDIA显卡不满足要求 请修改dockerfile文件配置要求或慎重使用 关于dockerfile使用请参考我的博客文章 https blog csdn net weixin 41194129 category 1021002
  • 期中总结(码猿周六下午)

    期中总结 这半个学期我们第一二节课考了试 但是 第一次 115分 第二次 110分 结果都很不理想 不过这也在情理之中 之后我们学习了 简单分治 前缀和 二分法 贪心加强 递推 但是实际上后面几题都听得云里雾里的 毕竟是基础不好 再加上码龄
  • 一元多项式求导 C语言

    设计函数求一元多项式的导数 注 x n n为整数 的一阶导数为nxn 1 输入格式 以指数递降方式输入多项式非零项系数和指数 绝对值均为不超过 1000 的整数 数字间以空格分隔 输出格式 以与输入相同的格式输出导数多项式非零项的系数和指数
  • 前端优秀插件网站汇总整理——轻松建站。。。

    1 Amaze Ui 妹子UI 中国首个html5跨屏前端框架 http amazeui org 2 WebUploader 一个简单的以HTML5为主 FLASH为辅的现代文件上传组件 http fex baidu com webuplo
  • <python爬虫之JS逆向实例-1>新浪网

    声明 本文只作学习研究 禁止用于非法用途 否则后果自负 如有侵犯了您的合法权益 请告知 我将及时更正 删除 谢谢 邮箱地址 lc1139411732 163 com 文章目录 一 项目准备 二 参数分析 三 静态调试 四 动态调试 五 堆栈
  • yml连接两个mysql数据库_SpringBoot 多数据源配置/连接两个数据库 (SpringBoot+Mysql+SqlServer)(亲测可用)...

    Boot项目原配Mysql数据库 业务需要加上sqlserver数据库 网上看了两天 趟了不少坑 其实网上帖子挺全的 我遇到的问题没有太多相关介绍 现在搞好后分享给大家 自己也做个记录 1 首先 依赖配置 按需配置重点是数据库jar包跟bo
  • 攻防世界-lottery

    得到flag要 9990000 通过抽奖的方式获得钱 基本要7个数字都相同 扫目录 依次点开 robots txt中有 git 用git下载 或者直接下载附件1 源码 然后打开api php API Application Programm
  • 使用selenium+Edge进行浏览器不显示图片操作(屏蔽图片)

    使用Edge不加载图片进行 from msedge selenium tools import Edge EdgeOptions Edge options EdgeOptions 很关键的一步 只有为True才能进行ADD Edge opt
  • LeetCode 1143. 最长公共子序列(C++)

    题目地址 力扣 题目难度 Medium 涉及知识点 动态规划 字符串匹配 分析 由于子序列不同于子串 子串必须要连续 而子序列可以不连续 假设最长子序列长度为k 那么我们如果要通过遍历的方法来暴力求解 其时间复杂度至少为O 这肯定是无法接受
  • 【华为OD机试 2023】最左侧冗余覆盖子串(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • (fastjson)java 如何将String(字符串)与JSON互转

    一 导入依赖
  • Apple的示例SpeakHere不能运行解决

    From your error message Application windows are expected to have a root view controller at the end of application launch
  • 论文写作记录

    论文画图 在MATLAB中导出600dpi图像 导出设置dpi后 导出tif格式的图片 直接重命名为jpg格式
  • 从分层架构到微服务架构(五)之服务化架构

    从分层架构到微服务架构 是一系列介绍 Fundamentals of Software Architecture 中提到的8种架构模式的文章 这里不会事无巨细地介绍所有的细节 而是会挑选其中关键内容 更多详情请阅读原书 往期精彩 从分层架构
  • 静态的main方法为啥可以访问非静态成员

    首先第一点 静态方法中可以创建动态变量和方法 第二点 对象属于动态的 第三点 动态的可以调用调用静态的 综上 所以要在静态方法里面调用动态参数和动态的方法就可以通过创建对象来实现调用动态参数和动态的方法 https www bilibili
  • SpringBoot如何使用JDBC操作数据库呢?

    转自 SpringBoot如何使用JDBC操作数据库呢 下文笔者讲述SpringBoot中使用jdbc操作数据库的方法分享 如下所示 实现思路 1 引入相应的jar包 2 在application yml配置相应的数据库连接信息及其它属性
  • Qt 平台在windows下配置CGAL

    首先我用的平台和库的版本是 Qt Creator 2 5 0 Qt 4 8 2 CGAL 4 1 Boost1 15 CMake2 8 8 一 名词解释 1 CGAL Computational Geometry Algorithm Lib
  • 转】PPT带备注演示(只有讲解者看到备注)[转载]

    带备注演示 讲解者可以看到备注 观众看不到 想实现PPT带备注的演示吗 这种方式只有讲解者自己能够看到备注内容 而观 看PPT演示的人看不见 如下 图所示 要实现这种放映方式只需要简单的两步 1 第一步设置多显示器 在Windows XP中
  • 利用RMI实现在多台服务器之间的资源共享

    RMI Remote Method Invocation RMI是分布式对象软件包 它简化了在多台计算机上的JAVA应用之间的通信 JDK1 2以上都支持这个功能 有了RMI就可以实现不同服务器之间的通信 也就是多个JVM Java Vir