欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供photoshop教程,ps教程,flash教程,cad教程,网页制作教程,excel教程,asp教程,vb教程,3d教程,c语言教程,html教程,coreldraw教程,dreamweaver教程,java教程,3dmax教程 等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图 设为首页
简繁切换 加入收藏
栏目待定 留言本站
您现在的位置: 无师自通-教程网 >> 程序设计 >> JAVA教程 >> WEB SERVICE >> 教程正文

  没有公告

教程: JAVA WEB SERVICE-用Java 1.1建立联网的白板(1) 更多...
教程: JAVA WEB SERVICE-用Java 1.1建立联网的白板(1)

用Java 1.1建立联网的白板(1)

上个月,我们研究了怎样用JDK1.1的各种新特征和新技术在图形界面下写一个简单的白板。本月,我们将讨论真正地把白板联到网上,以便多个用户在Internet上合作。

白板的设计标准之一是不能把应用程序紧耦合;就是说,不同类的应用程序不能互相缠绕。当我们把两个不同的网络层加到白板上,而不需修改原来的代码时这是很重要的。(比如一个基于传统的TCP服务协议,另一个基于RMI。)当然,我承认的确要改一部分,但基本上可以不改。

我们的世界每一天都在变小、各种组织,联盟跨越了全球,各种业务涉及越来越远的地方。过去,协调这种全球性的分散组织是很困难的,但随着网络的发展一切都不同了。有了象白板这样的工具,把世界各地的用户联接起来变的非常简单。上个月我们学习了白板的图形方面的特性(如下图所示),现在我们准备给这个应用程序加一些网络特征。我们要通过把ObservableList类网络化来完成这一点。上个月我提到过,这个类为白板生成一个属性列表。

9801-1-1.gif (13585 bytes)
图1. 图解的白板

我们的工具通过改变参数列表来操纵白板。当参数列被改变时,所有相关的监控程序会注意到。显示列中的监控者会自动按这一改动来调整自己。

为了联网,我们只要用“分布式”的“ObservableList"来代替“ObservableList”,“分布式”的“ObservableList”可以保证变化通过网络传播。这种分布式的列表可以提供与本地列表一样的API,并且不需要改变白板的任何部分。

本文中我们将学习两种联网方法──基于端口的(socket)和基于RMI的,并且比较他们的优缺点。

· 新的列表类

第一步是实现一个新的名为“IDList”的列表类。这个类实际上是Hash类和Vector类的组合;他是标识符元件对(Hash)的序列表(Vector)。当对象被加入IDList时,被自动分配一个联合标识符。这个列表给元件分配地址是按他们的标识符,(而不是按传统的索引号,当删除或插入时会该变他)

9801-1-2.gif (722 bytes)
图2. IDList 类

当我们将IDList类联上网时,元件标识符会传给所有联接着的白板。这些白板通过使用他们的标识符一起使用这些表上的元件。

· IDList类

IDList类提供的界面还很不成熟;但已经足够让我们达到目的了。让我们很快地看一下这个类提供的方法:

  • public Object addElement(Object element)

这个方法给列加一个元件,给他一个唯一的标识符(基于这个元件的虚拟机哈西码)并返回这个标识符。

  • public Object replaceElement (Object oldID, Object element)

这个用一个新的元件(element)来代替oldID标识的旧元件。新元件加在列尾并返回分配给他的标识符。如果指定的旧元件不在列中,则不加入新元件并返回“NULL”。

9801-1-3.gif (1209 bytes)
图3. replace Element()的效果

  • public void addElementWithID (Object id, Object element)

这个方法向列中加入一个新元件,给他分配id指定的标识符。对于上网的白板,由中心服务器指定标识符,所以客户只能用本方法向本地列中加元件。

  • public boolean replaceElementWithID (Object oldID, Object id,Object element)

这个方法用新元件代替oldID指定的旧元件,并预先指定标识符(id)。新元件加在*队尾。成功时返回“TRUE”否则返回“FALSE”。

  • public Object getIDOfElement (Object element)

这个方法成功时返回指定元件的标识符,如果指定元件不存在返回“NULL”。

  • public Enumeration elements ()

本方法返回当前列的元件列表。

  • public Object clone ()

本方法返回当前列的clone。

  • public int getUpdateCount ()

这个方法返回当前列的修改次数。

我不想分析代码──这相对简单。唯一与我们有关系的是使用System.identityHashCode(Object)来给每个元件分配唯一标识符。我们可以简单地用递增计数的方法来分配标识符;但我将讲到的方法要有趣得多。

(未完待续)

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
     
     
     

    access基础知识
    免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
    辽ICP备07003958号
    无师自通,伴你一生-教程网