网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > Java精品代码 > 正文

使用非JAVA代码

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

  1. 编写IDL源码

  第一步是为提供的服务编写一个IDL描述。这通常是由服务器程序员完成的。随后,程序员就可用任何语言实现服务器,只需那种语言里存在着一个CORBA IDL编译器。

  IDL文件已分发给客户端的程序员,并成为两种语言间的桥梁。

  下面这个例子展示了时间服务器的IDL描述情况:

  1031页上程序

  这是对RemoteTime命名空间内的ExactTime接口的一个声明。该接口由单独一个方法构成,它以字串格式返回当前时间。

  2. 创建根干

  第二步是编译IDL,创建Java根干代码。我们将利用这些代码实现客户和服务器。与JavaIDL产品配套提供的工具是idltojava:

  idltojava -fserver -fclient RemoteTime.idl

  其中两个标记告诉idltojava同时为根和干生成代码。idltojava会生成一个Java包,它在IDL模块、RemoteTime以及生成的Java文件置入RemoteTime子目录后命名。_ExactTimeImplBase.java代表我们用于实现服务器对象的“干”;而_ExactTimeStub.java将用于客户。在ExactTime.java中,用Java方式表示了IDL接口。此外还包含了用到的其他支持文件,例如用于简化访问命名服务的文件。

  3. 实现服务器和客户

  大家在下面看到的是服务器端使用的代码。服务器对象是在ExactTimeServer类里实现的。RemoteTimeServer这个应用的作用是:创建一个服务器对象,通过ORB为其注册,指定对象引用时采用的名称,然后“安静”地等候客户发出请求。

  1031-1033页程序

  正如大家看到的那样,服务器对象的实现是非常简单的;它是一个普通的Java类,从IDL编译器生成的“干”代码中继承而来。但在与ORB以及其他CORBA服务进行联系的时候,情况却变得稍微有些复杂。

  4. 一些CORBA服务

  这里要简单介绍一下JavaIDL相关代码所做的工作(注意暂时忽略了CORBA代码与不同厂商有关这一事实)。main()的第一行代码用于启动ORB。而且理所当然,这正是服务器对象需要同它进行沟通的原因。就在ORB初始化以后,紧接着就创建了一个服务器对象。实际上,它正式名称应该是“短期服务对象”:从客户那里接收请求,“生存时间”与创建它的进程是相同的。创建好短期服务对象后,就会通过ORB对其进行注册。这意味着ORB已知道它的存在,可将请求转发给它。

  到目前为止,我们拥有的全部东西就是一个timeServerObjRef——只有在当前服务器进程里才有效的一个对象引用。下一步是为这个服务对象分配一个字串形式的名字。客户会根据那个名字寻找服务对象。我们通过命名服务(Naming Service)完成这一操作。首先,我们需要对命名服务的一个对象引用。通过调用resolve_initial_references(),可获得对命名服务的字串式对象引用(在JavaIDL中是“NameService”),并将这个引用返回。这是对采用narrow()方法的一个特定NamingContext引用的模型。我们现在可开始使用命名服务了。

  为了将服务对象同一个字串形式的对象引用绑定在一起,我们首先创建一个NameComponent对象,用“ExactTime”进行初始化。“ExactTime”是我们想用于绑定服务对象的名称字串。随后使用rebind()方法,这是受限于对象引用的字串化引用。我们用rebind()分配一个引用——即使它已经存在。而假若引用已经存在,那么bind()会造成一个异常。在CORBA中,名称由一系列NameContext构成——这便是我们为什么要用一个数组将名称与对象引用绑定起来的原因。

  服务对象最好准备好由客户使用。此时,服务器进程会进入一种等候状态。同样地,由于它是一种“短期服务”,所以生存时间要受服务器进程的限制。JavaIDL目前尚未提供对“持久对象”(只要创建它们的进程保持运行状态,对象就会一直存在下去)的支持。

  现在,我们已对服务器代码的工作有了一定的认识。接下来看看客户代码:

  1034页程序

  前几行所做的工作与它们在服务器进程里是一样的:ORB获得初始化,并解析出对命名服务的一个引用。

  接下来,我们需要用到服务对象的一个对象引用,所以将字串形式的对象引用直接传递给resolve()方法,并用narrow()方法将结果造型到ExactTime接口引用里。最后调用getTime()。

  5. 激活名称服务进程

  现在,我们已分别获得了一个服务器和一个客户应用,它们已作好相互间进行沟通的准备。大家知道两者都需要利用命名服务绑定和解析字串形式的对象引用。在运行服务或者客户之前,我们必须启动命名服务进程。在JavaIDL中,命名服务属于一个Java应用,是随产品配套提供的。但它可能与其他产品有所不同。JavaIDL命名服务在JVM的一个实例里运行,并(默认)监视网络端口900。

  6. 激活服务器与客户

  现在,我们已准备好启动服务器和客户应用(之所以按这一顺序,是由于服务器的存在是“短期”的)。若各个方面都设置无误,那么获得的就是在客户控

  • 下一篇资讯: java小游戏源代码
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师