java分布式框架rmi_使用Java的RMI框架建立分布式服务

builder.jpg

Java的远程方法调用(RMI)框架可以为你建立虚拟的透明的分布式服务和程序。基于RMI的程序包含能够使不同位置的程序进行相互调用的方法。这一特性使得Java对象能够调用其他虚拟机器上的Java对象,同样的,其他虚拟机器上的Java对象也可以以相同方式调用这一台机器上的Java对象。

界面

每一个远程对象都必须具有输出端口,这样它才能接收输入的远程方法请求。远程对象可以通过调用以下的方法人工地设置输出端口:

java.rmi.server.UnicastRemoteObject.exportObjec方法或者

java.rmi.activation.Activatable.exportObject方法。

当远程对象使用java.rmi.server.UnicastRemoteObject

或者java.rmi.activation.Activatable时,它们也自动地设置了输出口。

传递java.rmi.RemoteException的构造函数不能够被忽略,因为输出过程可能会失败。TimeKeeper远程对象界面的一个合法的执行操作。

RMI注册表

RMI定义了作为RMI注册表的一个远程对象库。一个RMI注册表其实是一个简单的名称服务器,它保持对远程对象的引用,并使它们与RMI服务器连接。

在一个基于UNIX的操作系统,使用以下的命令行来启动RMI注册表:

rmiregistry &

在Windows操作系统,RMI注册表必须运行在端口1099。当启动注册表时,你可以通过指定端口数目来设置一个不同的端口。例如,以下的代码行将启动Windows系统中3000端口的注册表:

start rmiregistry

3000

RMI服务器

为了能够保证远程对象得到连接与使用,远程对象客户必须连接到包含对象引用的RMI服务器。一个RMI服务器是一个简单的Java类,它能够执行一个主程序,输出每一个远程对象,连接对象实例到RMI注册表的名称。

无论在任何时候通过JVM下载代码,一定要考虑到安全问题,以此避免系统出现对象执行不安全的操作。所以,RMI服务器的主程序一定建立和安装一个安全管理系统,如以下范例所示:

if (System.getSecurityManager() == null)

{

System.setSecurityManager(new RMISecurityManager());

}

RMI服务器建立远程对象的例子,然后将它们连接到一个可以被远程客户识别和调用的名称,如下代码所示:

TimeKeeperImplobj = new TimeKeeperImpl();// instantiate the object

Naming.rebind("//myhost/TimeKeeper", obj);

// bind the object to a name

当远程对象被示例化时,它即被设置输出端口并可以接收请求的调用。

一旦一个远程对象被示例化,以及被一个名称连接,远程调用者可以通过名称而识别能者对象,获得远程对象引用,并且能够调用对象中的方法。

启动服务器

启动一个RMI服务器只需要运行服务器,这与运行一个普通的Java程序一样。然而,几个名称/值的属性必须在命令行中得到定义:

java.rmi.server.codebase属性被定义,这样类就可以被动态地下载到注册表,然而传递到客户端。

java.security.policy属性被定义,这样服务器就可以识别哪些安全措施需要执行。

SimpleRMIServer,设置java.rmi.server.codebase属性到http://myhost/~jeff/remoteobjects及java.security.policy属性到OME/jeff/policies/policy。

SimpleRMIServer被启动之后,你可以看到以下的输出:

TimeKeeper is bound in the registry

总结

在这一篇文章中,我们探索了RMI如何被用于建立远程连接,能够为开发人员集中精力于通讯体系之外的有关难点。Java的远程方法调用框架能够让你建立虚拟的透明的分布式服务和程序。基于RMI的程序可以使得Java对象相互得到调用。

责任编辑:李宁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值