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是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。 编写一个RMI的步骤 定义一个远程接口,此接口需要继承java.rmi.Remote 开发远程接口的实现类 创建...
Java RMI (Remote Method Invocation 远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。
RMI是Remote Method Invocation(远程方法调用)的 所写。它允许一个Java程序调用网络中另一台计算机上的Java方法,就如调用本机的方法一样。实现RMI调用的程序和被调用的方法,都必须是Java代码,即客户端和服务器...
RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java... RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能
Remote Method Invocation ppt
Java RMI(Remote Method Invocation,远程方法调用)是Java在JDK1.1及以后的版本中实现的,它能让一个Java程序调用网络中另外一台计算机上的Java方法,就如同调用本地方法一样。RMI大大增强了Java开发分布式应用的...
RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。使用这种机制,某一台计算机上的对象可以调用另外一台计算机上的对象来获取远程数据。RMI是...
1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程...
Java RMI(Remote Method Invocation)--Java的远程方法调用是Java所特有的分布式计算技术,它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法,从而使Java编程人员可以方便地在网络环境...
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程...
本文档主要讲述的是java_RMI技术讲解;RMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。
Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI(Remote Method Invocation,远程方法调用)的功能。采用的是二进制RPC(Remote Procedure Call Protocol,远程过程调用协议)协议,因为采用...
RMI(Remote Method Invocation)远程方法调用与RPC(Remote Procedure Call Protocol)远程过程调用协议 文章目录RMI(Remote Method Invocation)远程方法调用与RPC(Remote Procedure Call Protocol)远程过程调用...
RMI,远程方法调用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。RMI是非常容易使用的,但是它非常的强大。
Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。是网络分布于...
RMI,远程方法调用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。RMI是非常容易使用的,但是它非常的强大。