首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心计算机论文计算机应用
   用RMI开发基于Java的企业分布式应用      ★★★ 【字体: 】  
用RMI开发基于Java的企业分布式应用
收集整理:佚名    来源:本站整理  时间:2009-01-10 11:53:49   点击数:[]    

Stub。
3.2 远程引用层(Remote Reference Layer)
远程引用层定义和支持着RMI连接的调用语义(semantics)。
RMI进行远程访问要用到JRMP(Java Remote Method Protocol,即Java远程方法协议),
这一层提供专用于JRMP的RemoteRef对象,它位于java.rmi.server包内,代表着远程对象的一个句柄。RemoteRef使用远程引用来执行远程对象的一个远程方法调用。
3.3 传输层(Transport Layer)
传输层在JVM之间建立基于流的网络连接,并且负责设置和管理这些连接。这时候,RMI使用一种线级(wire-level)协议进行基于TCP/IP的连接,该协议就是Java远程方法协议(JRMP,即Java Remote Method Protocol)。
在JDK版本1.2开始,JRMP不再需要Skeleton,而是使用reflection来建立与远程服务的连接。为了生成Stub,我们须用rmic。
当前的RMI实现中,传输层建立在TCP/IP基础上,设计用于在客户和服务器之间建立一条连接(即使联网有障碍)。

4 开发的基本步骤
我们使用RMI编写Client/Server模式(客户/服务器)应用程序,包括6个基本步骤:
1) 定义远程接口
2) 实现远程接口
3) 准备远程调用的服务器对象
4) 生成残根Stub(客户代理)和框架Skeleton(服务器实体)
5) 用rmiregistry找到远程对象
6) 运行测试RMI分布式应用 5 开发企业信息发布系统实例
在开发RMI进行分布式访问之前,需要将各项功能模块化,即把实际应用抽象成符合Java规范的类和接口模型,使这些类和接口之间互相协作,能实现各自独立的功能,最后,可以把它们组合成统一的网络分布式系统。
现在,我们就以开发公司信息发布系统为例,把主模块(主要的类文件)的名称暂定为InfoDistributeService(信息发布服务),为了保持应用开发的数据一致性和清晰度,接下来涉及的其它模块命名也将以这个模块命名为基准。

5.1定义远程接口
Java RMI运行环境要求任何可以远程调用的方法必须放在远程接口中。
该远程接口用来扩展java.rmi.Remote接口,在Java API中,可以发现它没有任何方法,只是个标志性接口,这样,可以让Java运行环境(JRE)认识每个接口的特殊属性,以便能够远程访问。
因此,按照信息发布服务的命名(InfoDistributeService),首先须将InfoDistributeRemote定义为远程接口,同时仅放入一个供测试的方法 getRemoteInfo()来实现编码,将所有模块至于新建的enterprise.distribute包中,代码如下:
// -----------InfoDistributeRemote.java-------------------
package enterprise. distribute;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface InfoDistributeRemote extends Remote{
public String getRemoteInfo() throws RemoteException;
}

5.2 实现远程接口
这是一个实现远程对象的类。如果实现了远程接口,就能够覆盖(override)该对象中的所有方法,因此,远程对象的实现类将真正包含我们希望导出的方法的代码。
在远程信息发布系统中,我们至少实现一个远程接口的对象,它就是远程可访问的对象。这里,InfoDistributeService类可以为我们生成远程可访问对象的实例:
// -----------InfoDistributeService.java------------------
package enterprise. distribute;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class InfoDistributeService 
extends UnicastRemoteObject implements InfoDistributeRemote{
public InfoDistributeService() throws RemoteException{
super();
}
// The return value of the method only for testing...
public String getRemoteInfo(){ 
return “Hello! I am a remote object.”;
}
}
InfoDistributeService类实现远程接口InfoDistributeRemote,并继承java.rmi.server.UnicastRemoteObject。由于符合InfoDistributeRemote接口,因此该类除构造方法之外,还应有getRemoteInfo()方法,而且必须将该方法实现。
同时我们注意到,getRemoteInfo()方法抛出了java.rmi.RemoteException异常。由于远程方法调用过程中,要进行很多的低级网络操作,因此网络错误可能在调用过程中随时发生,这样,远程接口中的每个方法(尽管这里只有一个getRemoteInfo()方法)都必须抛出RemoteException异常,而且,java.rmi.RemoteException都要在代码中显式处理,即将所有RMI活动涉及的代码都要放在try-catch块中。

5.3 准备供远程调用的服务器对象
这是一个作为服务器使用的类,它是相对于要访问远程方法的客户端而言的。它存储着绑定的字符串和对象。
将远程对象设置成接受远程调用就像启动了侦听ServerSocket对象的socket服务器。事实上在使用RMI时,TCP/IP协议的传输方式,在幕后发生了很多底层网络操作,但是此刻,用户不需要知道这些细节,只需要逐步导出远程对象:
在Java开发工具的较新版本JDK 1.4中,可以选择java.rmi.UnicastRemoteObject或者java.rmi.Activation.Activatable。其中,更多用到的是UnicastRemoteObject,因为它顾名思义,就是在客户机与服务器对象实例之间建立一对一连接。

5.4 生成St

上一页  [1] [2] [3] [4]  下一页


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:城市规划信息资源的共享与服务

  • 下一篇文章:Solaris下PRO*C和OCI程序设计分析与比较
  • 返回上一页】【打 印】【关闭窗口
    中查找“用RMI开发基于Java的企业分布式应用”更多相关内容 5VAR论文频道
    中查找“用RMI开发基于Java的企业分布式应用”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››Delphi 5 数据库应用中ODBC数据源的...
  • ››用Visual Basic 6.0实现自动化测试...
  • ››用JAVA制作ICQ
  • ››在IIS 4.0上配置虚拟主机实现虚拟I...
  • ››利用VB开发CAI课件
  • ››基于GP算法的知识发现系统
  • ››基于Client/Server 的课件系统的设...
  • ››WWW对大量数据查询的一种实现
  • ››基于PHP的Web数据库访问
  • ››Developer/2000中的Forms参数及应用...
  • ››用RMI开发基于Java的企业分布式应用...
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .