`
qnzhl
  • 浏览: 29671 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

RMI (Remote Method Invocation)远程方法的简单调用

阅读更多
RMI介绍:JNDI 就是一个注册表,服务端将服务对象放入到注册表中,客户端从注册表中获取服务对象

定义远程接口:
package demo.zookeeper.remoting.common;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
*
* @author Administrator
* 2015-4-12
*
* 继承了 Remote 接口,实际上是让 JVM 得知该接口是需要用于远程调用的,
* 抛出了 RemoteException 是为了让调用 RMI 服务的程序捕获这个异常。
* 毕竟远程调用过程中,什么奇怪的事情都会发生(比如:断网)。
* 需要说明的是,RemoteException 是一个“受检异常”,在调用的时候必须使用 try...catch... 自行处理。
*
*/
public interface HelloService extends Remote{

String sayHello(String name)throws RemoteException;

}


编写远程服务方法:
package demo.zookeeper.remoting.server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import demo.zookeeper.remoting.common.HelloService;
/**
*
* @author Administrator
* 2015-4-12
*实现以上的 HelloService 是一件非常简单的事情,但需要注意的是,
*我们必须让实现类继承 java.rmi.server.UnicastRemoteObject 类,此外,必须提供一个构造器,
*并且构造器必须抛出 java.rmi.RemoteException 异常。
*我们既然使用 JVM 提供的这套 RMI 框架,那么就必须按照这个要求来实现,
*否则是无法成功发布 RMI 服务的,一句话:我们得按规矩出牌!
*
*
*/
public class HelloServiceImpl extends UnicastRemoteObject implements HelloService{

/**
* @throws RemoteException
*/
public HelloServiceImpl() throws RemoteException {
}

@Override
public String sayHello(String name) throws RemoteException {
// TODO Auto-generated method stub
return String.format("Hello %s!", name);
}

}



注册服务端接口:
package demo.zookeeper.remoting.server;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
/**
*
* @author Administrator
* 2015-4-12
*发布 RMI 服务,我们需要告诉 JNDI 三个基本信息:1. 域名或 IP 地址(host)、2. 端口号(port)、3. 服务名(service),
*它们构成了 RMI 协议的 URL(或称为“RMI 地址”)
*LocateRegistry.createRegistry() 方法在 JNDI 中创建一个注册表,只需提供一个 RMI 端口号即可。
*此外,通过 Naming.rebind() 方法绑定 RMI 地址与 RMI 服务实现类,这里使用了 rebind() 方法
*运行这个 main() 方法,RMI 服务就会自动发布,剩下要做的就是写一个 RMI 客户端来调用已发布的 RMI 服务
*rmi://<host>:<port>/<service> service实际上基于同一host与port下唯一的服务名
*
*/
public class RmiServer {

public static void main(String[] args) throws Exception{
int port=1099;
String url="rmi://localhost:1099/demo.zookeeper.remoting.server.HelloServiceImpl";
LocateRegistry.createRegistry(port);
Naming.rebind(url, new HelloServiceImpl());
}

}



客户端调用:
package demo.zookeeper.remoting.client;
import java.rmi.Naming;
import demo.zookeeper.remoting.common.HelloService;
/**
*
* @author Administrator
* 2015-4-12
* RMI 请求路径、2. RMI 接口(一定不需要 RMI 实现类,否则就是本地调用了)。数行代码就能调用刚才发布的 RMI 服务
*
*
*/
public class RmiClient {

public static void main(String[] args)throws Exception {
String url="rmi://localhost:1099/demo.zookeeper.remoting.server.HelloServiceImpl";
HelloService hello=(HelloService)Naming.lookup(url);
String result=hello.sayHello("zgs!!");
System.out.println(result);
}
}

分享到:
评论

相关推荐

    Remote Method Invocation-远程方法调用

    ### Remote Method Invocation (RMI) – 远程方法调用详解 #### 一、RMI 概述 **远程方法调用**(Remote Method Invocation, RMI)是Java平台中的一个核心概念和技术,它允许开发者创建分布式应用,在这些应用中,...

    RMI代码 remote method invocation

    远程方法调用(Remote Method Invocation,RMI)是Java平台中一种用于分布式计算的技术,它允许Java对象在不同的 JVM(Java虚拟机)之间调用方法,仿佛这些对象都在同一个JVM中一样。RMI是Java EE(现在被称为...

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

    Remote Method Invocation是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。 编写一个RMI的步骤 定义一个远程接口,此接口需要继承java.rmi.Remote 开发远程接口的实现类 创建...

    java rmi远程方法调用 客户端

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间透明地调用对象的方法。在RMI架构中,客户端能够像调用本地对象一样调用远程服务器上的对象...

    RMI远程方法调用RMI远程方法调用

    RMI(Remote Method Invocation)是一种Java技术,它提供了在不同网络节点上的Java虚拟机之间调用对象方法的能力。RMI使得开发分布式应用程序变得简单,因为开发者不需要关注底层网络通信的细节,而是专注于业务逻辑...

    Java RMI 远程方法调用

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间进行方法调用,仿佛这些方法是在本地对象上执行一样。这个技术极大地简化了构建分布式应用的...

    Java RMI(远程方法调用)Demo

    Java RMI,全称为Remote Method Invocation,是Java平台上的一个核心特性,用于实现分布式计算。它允许Java对象在不同的JVM之间进行通信,仿佛这些对象都在同一台机器上一样。这个技术尤其适用于构建大规模的、分散...

    RMI客户端调用远程服务器方法-远程方法调用

    在Java编程领域,远程方法调用(Remote Method Invocation,RMI)是一种强大的技术,它允许一个Java对象在某个JVM(Java虚拟机)上执行另一个JVM中的对象的方法。RMI是分布式计算的基础,尤其在构建分布式应用程序时...

    Java RMI远程方法调用详解-例子代码

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于分布式计算的技术,它允许一个Java对象调用另一个在不同Java虚拟机(JVM)上的对象的方法。RMI使得开发分布式应用变得更加简单,因为...

    JDK9-JSE- Java Remote Method Invocation API Guide-2.pdf

    Java Remote Method Invocation(Java RMI)是一种允许开发者创建分布式应用程序的技术。Java RMI 允许对象在另一个 Java 虚拟机(JVM)上调用远程 Java 对象的方法,可能在不同的主机上。Java RMI 使用对象序列化来...

    三种方式实现java远程调用(rmi),绝对可用

    Java远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...

    RMI - Java远程方法调用

    Java Remote Method Invocation (RMI) 是Java平台提供的一种机制,允许在不同的Java虚拟机之间进行对象的方法调用,跨越网络连接。RMI是Java分布式计算的核心技术,它使得开发者能够构建分布式应用程序,使得代码...

    RMI实现的远程调用

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于在不同Java虚拟机之间进行远程通信的技术。通过RMI,开发者可以透明地调用运行在其他网络节点上的对象的方法,就像它们是在本地一样。...

    Java-远程方法调用RMI参数详解.docx

    Java 远程方法调用(Remote Method Invocation,RMI)是一种在分布式环境中调用对象方法的技术,它使得Java应用程序能够透明地调用运行在不同 JVM 上的远程对象的方法。RMI 包含了一系列的参数,这些参数对于优化...

    JDK10-JSE,Java Remote Method Invocation API Guide-2.pdf

    Java Remote Method Invocation(Java RMI)是一种允许分布式应用程序在Java平台上运行的技术。它允许在不同的Java虚拟机(JVM)上运行的对象之间调用方法,从而实现分布式计算和信息-sharing。 Java RMI使用对象...

    rmi远程方法的调用

    RMI(Remote Method Invocation,远程方法调用)是Java平台上的一个重要特性,它允许Java对象在不同的Java虚拟机(JVM)之间进行交互,从而实现分布式计算。在Java中,RMI提供了一种透明的方式,使得客户端代码可以...

    java RMI客户端调用远程服务器系统命令

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互。RMI使得客户端能够调用运行在远程服务器上的对象的方法,就像调用本地对象...

    rmi java 远程方法调用

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互,就像调用本地方法一样。RMI是Java在网络编程中的重要组成部分,尤其在构建...

    ssd8 exercise4 RMI远程方法调用

    在计算机科学领域,尤其是分布式系统和网络编程中,RMI(Remote Method Invocation,远程方法调用)是一项重要的技术。RMI允许Java程序在不同的Java虚拟机(JVMs)之间透明地调用方法,就像这些方法是在同一个对象上...

Global site tag (gtag.js) - Google Analytics