`
yjp
  • 浏览: 22059 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论
阅读更多
Java RMI技术API在java.rim包及其了包中,其基本思想是将一个封装有特殊方法的对象绑定到一个端口上,等待其他计算机的调用这个对象上的方法。
实现RIM基本流程如下:
1.编写RIM功能接口,该接口必须扩展自java.rmi.Remote,而且接口中每一个方法都必须抛出一个java.rmi.RemoteException。例如:
public interface Rem extends Remote {
public String getMessage() throws RemoteException;
}
2.编写RMI功能现实,通常RIM的实现是扩展自UnicastRemoteObject,并在构造函数中声明抛出一个java.rmi.RemoteException,例如:
public class RemImpl extends UnicastRemoteObject implements Rem {
private static final long serialVersionUID = 1L;
//构造函数抛出RemoteException异常
public RemImpl() throws RemoteException {}
//向RMI客户返回一个消息串
public String getMessage() throws RemoteException {

return("Here is a remote message.");
}
}
3.编写服务端程序,先用java.rmi.registry.LocateRegistry在将要绑定对象的端口上创建一个注册器,然后设置虚拟机的安全管理器为RMISecurityManager,最后调用注册器的bind(String name,Remote object)或rebind(String name,Remote object)。例如:
public class RemServer {

public static void main(String[] args) {

try {
System.setProperty("java.security.policy","*.policy");//设置安全策略
RemImpl localObject = new RemImpl(); //生成远程对象实现的一个实例
Registry reg = LocateRegistry.createRegistry(8000);
System.setSecurityManager(new     RMISecurityManager());     
reg.rebind("Rem", localObject); //将远程对象实例绑定到rmi:///Rem上    

}catch(Exception ex){
ex.printStackTrace();
}
}}
4.编写客户端程序,先使用java.rmi.Naming根据rmi协议在指定的计算机、端口和被绑定的对象名称lookup一个远程对象,然后调用该对象所提供的方法。例如:
public static void main(String[] args) {

try {

String host = (args.length > 0) ? args[0] : "localhost"; //从命令行读取远程主机名

//通过URL在远程主机上查找对象,并把它转化为本地接口Rem类型

Rem remObject=(Rem)Naming.lookup("rmi://"+host + ":8000/Rem");

System.out.println(remObject.getMessage()); //调用远程对象的方法

} catch(RemoteException re) {System.out.println("RemoteException: " + re);

} catch(NotBoundException nbe) {System.out.println("NotBoundException: " + nbe);

} catch(MalformedURLException mfe){System.out.println("MalformedURLException:"+ mfe);

}}}
此外,在调用方法方面可以用java的反射机制调用,还可以为RMI的连接上通keystore设置权限与加密。如:
通过RMISSLClientSocketFactory和RMISSLServerSocketFactory这两个接口,生成加密的SSLSocket和SSLServerSocket
在Remote的扩展接口的实现类中,这个实现中要扩展自UnicastRemoteObject,并在构造函数中调用父类参三个参数的构造函数,如:
super(0, new RMISSLClientSocketFactory(),
new RMISSLServerSocketFactory());

再设置系统两个属性:
System.setProperty("javax.net.ssl.keyStore", "server.keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "server");
最后也可以设置一下策略文件,这也是权限的设置。关于策略文件可以参考一下tomcat等服务器的策略文件。

分享到:
评论
4 楼 naiyi 2009-12-31  
明知道打错字了还不编辑一下。。。。责任的不负
3 楼 yjp 2009-12-23  
呵呵,打错字了
2 楼 qalong 2009-12-20  
请先自己搞明白什么是RMI
RMI: Remote Method Invocation,远程方法调用
1 楼 grave 2009-12-20  
RIM? RMI? 名词都没搞明白吧

相关推荐

    spring rmi 简单应用

    总结来说,Spring RMI简单应用主要是利用Spring框架简化了RMI的配置和调用,使得在分布式环境中实现远程方法调用更加方便。通过定义远程接口、实现远程接口并在服务器端注册,以及在客户端创建代理类来调用远程方法...

    JAVA RMI简单例子

    这个"JAVA RMI简单例子"旨在帮助我们深入理解RMI的基本原理和实现步骤。 RMI的核心概念包括远程接口、远程对象和RMIC编译器。首先,我们需要定义一个远程接口,该接口声明了可以在远程服务器上执行的方法。这些方法...

    一个java RMI应用实例 构建简单的RMI应用

    创建客户端RMI调用服务端的应用程序。 启动服务端,再启动客户端,测试是否调用成功。 如果客户端和服务端不在同一台电脑上,则需要对刚才定义的服务类采用rmic 编译一个客户端的框架类_stub并拷贝到客户端的类...

    spring RMI简单例子

    在这个简单的例子中,我们将深入理解Spring RMI的工作原理以及如何实现一个基本的Spring RMI应用。 首先,让我们了解RMI的基本概念。RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一台机器上。它通过...

    Java RMI 简单示例

    总结来说,Java RMI简单示例主要展示了以下知识点: 1. **远程接口**:定义了远程方法的签名,需要继承`Remote`接口。 2. **远程对象**:服务器端的类实现远程接口,并继承`UnicastRemoteObject`,以支持远程调用。 ...

    rmi简单例子

    根据提供的文件信息,本文将详细解释RMI(远程方法调用)的概念、工作原理以及一个...上述示例展示了如何创建一个简单的RMI应用,包括服务端的实现和客户端的调用流程。这对于理解和实践RMI技术具有重要的指导意义。

    RMI简单实例RMI简单实例

    RMI在Java中提供了一种强大的分布式计算模型,使得对象之间的远程通信变得简单且高效。通过定义远程接口、实现远程对象、在服务器端注册以及在客户端调用这些步骤,可以构建起一个完整的RMI系统。在实际应用中,RMI...

    RMI应用开发小例子源码.rar

    这个给定的压缩包文件包含了一个简单的RMI聊天应用的源码,我们可以从中学到RMI的基础应用和相关概念。 首先,让我们来看看主要的源代码文件: 1. **RMIChatServerImpl.java**:这是服务器端的核心实现类,它实现...

    rmi.rar_rmi实现方式_rmi简单的实现

    RMI机制使得开发者能够像调用本地方法一样调用远端服务器上的对象方法,极大地简化了分布式应用的开发。下面将详细介绍RMI的基本概念、实现步骤以及其在实际应用中的价值。 一、RMI基本概念 1. 远程接口(Remote ...

    RMI原理及应用详解

    - **简单易用**: RMI提供了简洁的API,使得分布式编程变得直观。 - **高性能**: 直接基于Java字节码的通信,减少了数据序列化和反序列化的开销。 - **跨平台性**: 由于Java的“一次编写,到处运行”特性,RMI同样...

    java RMI简单Demo

    这种方式极大地简化了开发分布式应用程序的过程。 Java RMI的核心概念包括: 1. **远程接口(Remote Interface)**:定义了可以在远程对象上调用的方法。这个接口必须继承自`java.rmi.Remote`,并且声明的每个方法...

    java RMI简单例子

    以下是对"java RMI简单例子"的详细解释: 1. **RMI的基本概念**: - **远程对象**:在RMI中,一个对象如果可以在不同的JVM上执行其方法,那么就被称为远程对象。 - **远程接口**:定义远程对象需要实现的接口,...

    java简单示例rmi

    一个简单的RMI示例步骤如下: 1. 定义远程接口,如: ```java import java.rmi.Remote; import java.rmi.RemoteException; public interface MyRemoteInterface extends Remote { String doSomething(String ...

    分布式程序设计——RMI简单示例

    本篇文章将通过一个简单的RMI示例,帮助你理解和掌握如何使用RMI进行分布式编程。 首先,理解RMI的基本概念是非常重要的。RMI允许Java对象作为远程对象暴露给其他Java应用程序,这些应用程序可以像调用本地对象一样...

Global site tag (gtag.js) - Google Analytics