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 (RMI) – 远程方法调用详解 #### 一、RMI 概述 **远程方法调用**(Remote Method Invocation, RMI)是Java平台中的一个核心概念和技术,它允许开发者创建分布式应用,在这些应用中,...
远程方法调用(Remote Method Invocation,RMI)是Java平台中一种用于分布式计算的技术,它允许Java对象在不同的 JVM(Java虚拟机)之间调用方法,仿佛这些对象都在同一个JVM中一样。RMI是Java EE(现在被称为...
Remote Method Invocation是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。 编写一个RMI的步骤 定义一个远程接口,此接口需要继承java.rmi.Remote 开发远程接口的实现类 创建...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间透明地调用对象的方法。在RMI架构中,客户端能够像调用本地对象一样调用远程服务器上的对象...
RMI(Remote Method Invocation)是一种Java技术,它提供了在不同网络节点上的Java虚拟机之间调用对象方法的能力。RMI使得开发分布式应用程序变得简单,因为开发者不需要关注底层网络通信的细节,而是专注于业务逻辑...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间进行方法调用,仿佛这些方法是在本地对象上执行一样。这个技术极大地简化了构建分布式应用的...
Java RMI,全称为Remote Method Invocation,是Java平台上的一个核心特性,用于实现分布式计算。它允许Java对象在不同的JVM之间进行通信,仿佛这些对象都在同一台机器上一样。这个技术尤其适用于构建大规模的、分散...
在Java编程领域,远程方法调用(Remote Method Invocation,RMI)是一种强大的技术,它允许一个Java对象在某个JVM(Java虚拟机)上执行另一个JVM中的对象的方法。RMI是分布式计算的基础,尤其在构建分布式应用程序时...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于分布式计算的技术,它允许一个Java对象调用另一个在不同Java虚拟机(JVM)上的对象的方法。RMI使得开发分布式应用变得更加简单,因为...
Java Remote Method Invocation(Java RMI)是一种允许开发者创建分布式应用程序的技术。Java RMI 允许对象在另一个 Java 虚拟机(JVM)上调用远程 Java 对象的方法,可能在不同的主机上。Java RMI 使用对象序列化来...
Java远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...
Java Remote Method Invocation (RMI) 是Java平台提供的一种机制,允许在不同的Java虚拟机之间进行对象的方法调用,跨越网络连接。RMI是Java分布式计算的核心技术,它使得开发者能够构建分布式应用程序,使得代码...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于在不同Java虚拟机之间进行远程通信的技术。通过RMI,开发者可以透明地调用运行在其他网络节点上的对象的方法,就像它们是在本地一样。...
Java 远程方法调用(Remote Method Invocation,RMI)是一种在分布式环境中调用对象方法的技术,它使得Java应用程序能够透明地调用运行在不同 JVM 上的远程对象的方法。RMI 包含了一系列的参数,这些参数对于优化...
Java Remote Method Invocation(Java RMI)是一种允许分布式应用程序在Java平台上运行的技术。它允许在不同的Java虚拟机(JVM)上运行的对象之间调用方法,从而实现分布式计算和信息-sharing。 Java RMI使用对象...
RMI(Remote Method Invocation,远程方法调用)是Java平台上的一个重要特性,它允许Java对象在不同的Java虚拟机(JVM)之间进行交互,从而实现分布式计算。在Java中,RMI提供了一种透明的方式,使得客户端代码可以...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互。RMI使得客户端能够调用运行在远程服务器上的对象的方法,就像调用本地对象...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互,就像调用本地方法一样。RMI是Java在网络编程中的重要组成部分,尤其在构建...
在计算机科学领域,尤其是分布式系统和网络编程中,RMI(Remote Method Invocation,远程方法调用)是一项重要的技术。RMI允许Java程序在不同的Java虚拟机(JVMs)之间透明地调用方法,就像这些方法是在同一个对象上...