动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Enterprise JavaBeans导论5.
.Java文件操作大全(1).
.Eclipse插件开发之添加简单的GUI.
.利用Java编写手机应用程序Motoro.
.Java设计模式研究之Flyweight模式.
.Java环境变量的设置与调试.
.为基于J2ME的手机开发移动3D游戏.
.一个关于抛出异常的程序代码的分.
.java包机制(初稿).
.致 java 爱好者(3).
.Java之23种模式一点就通.
.从outlook导入email地址.
.J2EE应用程序中SQL语句自动构造方.
.用JBoss Eclipse IDE开发J2EE应用.
.浅析Java中常见的Date类的应用技.
.减法赋值运算符 (-=).
.Java 字符编码问题.
.Java深入分析之:使用FactoryMet.
.在Eclipse中使用Ant来自动编译J2.
.JDK1.3 中的本地绘制支持.

RMI与CORBA在Java中的应用

发表日期:2008-1-5 |



  本篇用实例来说明采用Java进行RMI远程方法调用及CORBA服务调用的实现方法,并分析它们的异同,从而为分布应用软件的开发者提供参考和帮助。
  Internet/Intranet的飞速发展使得Web应用日益广泛而复杂,Web早已不仅仅是超媒体信息的浏览工具,它正逐步发展成为分布异构环境中企业应用的通用前端和事务处理的展现窗口。在分布式环境异构中,各种机器所采用的操作系统、网络通信协议和应用软件千差万别,要实现信息共享和软件资源的整合十分困难,然而一个健壮的分布式计算框架能为可移植的分布式应用软件开发带来巨大的便利和好处。
  分布式对象技术主要是在分布式异构环境下建立应用系统框架和对象构件。在应用系统框架的支撑下,开发者可以将软件功能封装为更易治理和使用的对象,这些对象可以跨越不同的软、硬件平台进行互操作。目前,分布式互操作标准主要有Microsoft的COM/DCOM标准、Sun公司的Java RMI标准和OMG组织的CORBA标准。
  Java RMI调用实例
  Java RMI简介
  远程方法调用(RMI,Remote Method Invocation)是jdk1.1中引入的分布式对象软件包,它的出现大大简化了分布异构环境中Java应用之间的通信。
  
  要使用RMI,必须构建四个主要的类:远程对象的本地接口、远程对象实现、RMI客户机和RMI服务器。RMI服务器生成远程对象实现的一个实例,并用一个专有的URL注册。RMI客户机在远程RMI服务器上查找服务对象,并将它转换成本地接口类型,然后像对待一个本地对象一样使用它。
  
  下面是一个简单的RMI实例,RMI客户机通过RMI服务器提供的方法实现对两个双精度浮点数的加减运算。例子虽然很简单,但把握了Java RMI调用的基本原理和方法,在实现复杂应用时,我们需要做的也只是完善远程对象的实现类而已。
  
  RMI实例分析
  
  1.远程对象的本地接口声明(RMIOperate.java)
  
  该类仅仅是一个接口声明,RMI客户机可以直接使用它,RMI服务器必须通过一个远程对象来实现它,并用某个专有的URL注册它的一个实例。
  
  具体代码如下:
  
  package wf.rmi; //包名
  import java.rmi.*; //导入类包
  /*RMI本地接口必须从Remote接口派生*/
   public interface RMIOperate extends Remote
  {
   /*接口中的具体方法声明,注重必须声明抛出RemoteException*/
   public double add(double x, double y) throws RemoteException;
  //输入两个浮点数,返回其和
   public double minus(double x, double y) throws RemoteException;
  //输入两个浮点数,返回其差
  }
  2.远程对象实现类(OperateImpl.java)
  这个类应实现RMI客户机调用的远程服务对象的本地接口,它必须从UnicastRemoteObject继续,构造函数应抛出RemoteException异常。
  具体代码如下:
  
  package wf.rmi; //包名
  //导入需要的类包
  import java.rmi.*;
  import wf.rmi.RMIOperate;
  import java.rmi.server.UnicastRemoteObject;
  public class OperateImpl extends UnicastRemoteObject implements RMIOperate
  {
   /*构造函数*/
   public OperateImpl() throws RemoteException
   {
   }
   /*实现本地接口中声明的add方法*/
   public double add(double x, double y) throws RemoteException
   {
   double z = x + y;
   return z;
   }
   /*实现本地接口中声明的minus方法*/
   public double minus(double x, double y) throws RemoteException
   {
   double z = x - y;
   return z;
   }
  }
  3.RMI服务器类(RMIServer.java)
  该类创建远程对象实现类OperateImpl的一个实例,然后通过一个专有的URL来注册它。所谓注册就是通过Java.rmi.Naming.bind()方法或Java.rmi.Naming.rebind()方法,将OperateImpl实例绑定到指定的URL上。
  
  具体实现代码如下:
  
  package wf.rmi; //包名
  //导入需要的类包
  import java.rmi.Naming;
  import wf.rmi.OperateImpl;
  public class RMIServer
  {
   public static void main(String[] args)
   {
   try
   {
  //创建远程对象的实现实例
  OperateImpl operObj = new OperateImpl();
  //提示信息
  System.out.println("RMI Server Starting...");
  //将实例注册到专有的URL
  Naming.rebind("rmi:///RMIOperate", operObj);
  //等待RMI客户机调用的提示信息
  System.out.println("Waiting RMI Client Invoke...");
   }
   catch(Exception e)
   {
  e.printStackTrace();
   }
   }
  }
  4.RMI客户机类(RMIClient.java)
  
  RMI客户使用java.rmi.Naming.lookup()方法,在指定的远程主机上查找RMI服务对象,若找到就把它转换成本地接口RMIOperate类型。它与CORBA不同之处在于RMI客户机必须知道提供RMI服务主机的URL,这个URL可以通过rmi://host/path或rmi://host:port/path来指定,假如省略端口号,就默认使用1099。Java.rmi.Naming.lookup()方法可能产生三个异常:Java.rmi.RemoteException、Java.rmi.NotBoundException、java.net. MalformedURLException,三个异常都需要捕捉。
  
  下面是具体代码:
  
  package wf.rmi; //包名
  //导入需要的类包
  import java.rmi.*;
  import java.net.*;
  import java.io.*;
  public class RMIClient
  {
  public static void main(String[] args)
  {
    try
    {
      BufferedReader readIn = new BufferedReader(new
  InputStreamReader(System.in));
      String host = "localhost"; //默认为本地主机
   //带输入参数时,将host设置为指定主机
      if (args.length > 0)
        host = args[0];
      //根据指定的URL定位远程实现对象
  RMIOperate rmiObj = (RMIOperate)Naming.lookup("rmi://" + host +
  "/RMIOperate");      //提示输入运算参数1
  System.out.println("Please Input Data1: ");
      String str1 = readIn.readLine(); //读取输入参数1
      double x = 0;
      try
      {
   x = Double.parseDouble(str1); //分析输入参数1,转换为double类型
      }
     catch(NumberFormatException nfe)
      {
        x = 0; //假如转换异常,则重置x为0
      }
   //提示输入运算参数2
      System.out.println("Please Input Data2: ");
      String str2 = readIn.readLine();//读取输入参数2
      double y = 0;
      try
      {
        y = Double.parseDouble(str2); //分析输入参数2,转换为double类型
      }
      catch(NumberFormatException nfe)
      {
        y = 0; //假如转换异常,则重置y为0
      }
   //调用远程对象的本地接口方法,实现输入参数的加、减运算,并输出结果
     System.out.println("Data1 Add Data2 Result is: " + rmiObj.add(x, y));
     System.out.println("Data1 minus Data2 Result is: " +
    rmiObj.minus(x, y));
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }
  }
  RMI Server/Client的编译与运行
  
  (1).编译所有的源代码(如图1)
   RMI与CORBA在Java中的应用(图一)
  图1
  (2).生成客户端存根和服务器框架(如图2)
   RMI与CORBA在Java中的应用(图二)
  图2
  这将构造OperateImpl_Stub.class和OperateImpl_Skel.class。这时可将所有的Class文件打包成jar,并将其分别置于RMI客户机和RMI服务器的ClassPath中(如图3):
   RMI与CORBA在Java中的应用(图三)
  图3
  当然,也可以只将RMIOperate.class、RMIClient.class和OperateImpl_Stub.class复制到RMI客户机,将RMIOperate.class、OperateImpl.class 、RMIServer.class和OperateImpl_Skel.class复制到RMI服务器。
  (3).启动RMI注册(如图4)
   RMI与CORBA在Java中的应用(图四)
  图4
  (4).运行和调用
  ● 在服务器上执行RMIServer(如图5)
   RMI与CORBA在Java中的应用(图五)
  图5
  ● 在本地客户机上运行RMIClient(如图6)
   RMI与CORBA在Java中的应用(图六)
  图6
  ● 在远程客户机上运行RMIClient(须指明RMI服务器主机名或IP地址,如图7)
   RMI与CORBA在Java中的应用(图七)
  图7
  至
上一篇:CORBA 与Java 的 结 合 使 用 人气:477
下一篇:Jini技术介绍(一) 人气:387
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号