简单理解RMI

RMI (远程方法)是 Java 平台中建立分布式计算的基础, 2 年前我刚开始接触 J2EE 时,怎么看书都是不得要领,最近这几天闲着没事又翻了翻以前没有看懂的书,突然之间顿 悟了。

一、 简单的 RMI 示例:

要快速入门,最简单的方法就是看简单的例子。下面是我写的一个简单的示例:

首先,定义一个接口 IServer ,代码如下:

IServer.java
1 package rmistudy;
2
3 import java.rmi.Remote;
4
5  public  interface IServer extends Remote  {
6     public  void doSomeThing() throws java.rmi.RemoteException;
7 }
8
9

需要注意的是,这个接口从java.rmi.Remote接口扩展,并且这个接口中定义的方法都需 要抛出java.rmi.RemoteException异常。

接着,我们要根据这个接口来实现自己的服务器对象,所谓服务器对象,就是我们大脑中 想的远程对象,这个对象中定义的方法都是被别人来调用的。代码如下:

ServerImp.java
package rmistudy;
import java.rmi. * ;
import java.rmi.server. * ;
public  class ServerImp extends UnicastRemoteObject implements IServer  {
     public ServerImp() throws RemoteException  {
        super ();
    }
     public  void doSomeThing() throws RemoteException  {
        System.out.println( " 不带参数的远程函数doSomeThing()被调用,该 信息显示在服务器端。 " );
    }
     public  static  void main(String[] args)  {
        ServerImp server =  null ;
        try {
           server =  new ServerImp();
        } catch (Exception e) {
           System.out.println( " 创建远程对象失败: " );
           System.out.println(e.getMessage());
           System.exit( 0 );
        }
         try {
           java.rmi.Naming.rebind( " //localhost/MyServer " , server);
           System.out.println( " 远程对象绑定成功。 " );
        } catch (Exception e) {
           System.out.println( " 远程对象绑定失败: " );
           System.out.println(e.getMessage());
           System.exit( 0 );
        }
    }
}

时间: 2024-08-29 09:26:23

简单理解RMI的相关文章

委托/事件/线程传参简单理解

写了很多代码,但几乎都没写过委托/事件/线程传参方面应用的代码 因此自己总很容易理解后又遗忘 今天又重温了一下 因此以最简单的方式的代码方式写下来帮助理解 1.线程传参[简单几行代码]    1 static void Main(string[] args) 2         { 3             if (ThreadPool.QueueUserWorkItem(new WaitCallback(Program.WritePara), "这是传进去的参数")) 4     

Javascript闭包简单理解

原文:Javascript闭包简单理解 提到闭包,想必大家都早有耳闻,下面说下我的简单理解.说实话平时工作中实际手动写闭包的场景并不多,但是项目中用到的第三方框架和组件或多或少用到了闭包.所以,了解闭包是非常必要的.呵呵... 一.什么是闭包简而言之,就是能够读取其他函数内部变量的函数.由于JS变量作用域的特性,外部不能访问内部变量,内部可以外部变量. 二.使用场景1. 实现私有成员.2. 保护命名空间,避免污染全局变量.3. 缓存变量. 先看一个封装的例子: var person = func

简单理解Java的抽象类_java

在自上而下的继承层次结构中,位于上层的类更具有通用性,甚至可能更加抽象.从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对象.甚至,你可以只给出方法的定义而不实现,由子类根据具体需求来具体实现. 这种只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有"{}".包含一个或多个抽象方法的类也必须被声明为抽象类. 使用 abstract 修饰符来表示抽象方法和抽象类. 抽象类除了包含抽象方法外,

Android View事件分发和消费源码简单理解

Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开的感觉. 很重要的学习方法:化繁为简,只抓重点. 源码一坨,不要指望每一行代码都看懂.首先是没必要,其次大量非关键代码会让你模糊真正重要的部分. 以下也只是学姐的学习成果,各位同学要想理解深刻,还需要自己亲自去看源码. 2.源码分析 由于源码实在太长,而且也不容易看懂,学姐这里就不贴出来了,因为没必

简单理解DB2中编目的概念

在DB2数据库中,编目(catalog)这个单词很难理解,我自己当初在学习DB2的时候也常常被这个编目搞 的很不明白,直到现在我个人也感觉到DB2中编目(catalog)这个术语用的不是很好,具体来说编目有编 目节点,编目数据库等. 如果要理解编目,我先简单讲一下DB2数据库的体系结构,在DB2数据库中最大的概念是系统(节点) 也就是主机,下面是实例,实例下面是数据库,然后是表空间,然后是数据库对象.现在假设你有一个数 据库服务器在p570的机器上,你有一个客户端在windows,linux或任

简单理解Web Service三种实现方式

  Web Service概念: 根据W3C的定义,Web服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作.网络服务通常是许多应用程序接口(API)所组成的,它们通过网络的远程服务器端,执行客户所提交服务的请求.简单的来说就是服务器端向客户端提供服务. Web Service实现方式: (1)远程过程调用(RPC) RPC协议就是为了解决不同的客户端跨平台的访问服务器而产生的,最初的Web Service都是采用RPC部署,它是一种通过网络从远程计算机程序上请求

架构设计中服务层的简单理解

   在ddd设计中我们经常会提到服务层,服务层是什么?职责是什么?有什么好处?.    先看简单的层次图(注:这里并没有考虑其他多余的领域逻辑数据层存储,或者UOW这些细节)    我的理解是服务层是处于我的应用程序业务层和表现层之间的应用程序边界,边界可能是很薄的一层类设计或者是分布式服务网络跃点.它是一个与技术无关的名词.由表现层直接调用,契约,执行命令(修改状态(CUD))或者是查询返回dto(数据迁移对象)(cms,命令-查询分离).他对业务逻辑层接口很清楚,组织业务逻辑 微服务形成宏

简单理解PHP的面向对象编程方式_php基础

与大多数可以面向对象的编程语言不一样, PHP 是同时支持面向过程和面向对象的编程方式, PHP 开发者可以在面向过程和面向对象二者中自由选择其一或是混合使用,不过由于在 PHP5 之前的版本中, PHP 主要还是面向过程的编程语言,因此大多时候 PHP 开发者应该还是选择面向过程的方式进行开发,事实上, Kayo 认为即使一个 PHP 开发者完全不使用面向对象,他也能开发出很出色的 PHP 程序,我们可以想象, Web 页面的解析本身就很过程化,在 HTML 中嵌入面向过程处理的代码是非常自然

简单理解js的冒泡排序_javascript技巧

关于排序,其实不管是哪种语言,都有它内置的排序函数,我们要用的时候调用就行了,既然如此,我们为什么还要讲这个东西呢?我想,其实,我们讲排序更多是在于排序中包含的思想算法,因为,算法对于计算机来说相当重要,一个好的算法能够让计算机的效率达到事半功倍的效果,所以,算法是计算机语言中一门相当热门的课程,它所代表的计算机思维也是很值得我们去深入研究的. 我也知道,关于我标题中的排序,博客园中的很多作者都写过详细解释的文章,可能,笔者本人认为自己的理解更能体现出这个排序的工作原理吧,所以,笔者也就大惭不愧