JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--技术新闻--缓存区  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
CORBA平台 JacORB2.1 学习笔记--入门篇
作者:     文章来源:
访问次数:1次     加入时间:2005年01月01日
JacORB2.1 学习笔记--入门篇

JacORB是免费的Java对象请求代理系统(CORBA),附带全部源代码,包含大部分CORBA对象服务的实现,以及大量的代码实例。
下面将介绍如何运行它所带的DEMO,了解基本的JacOrb知识.

(假设您的系统为WIN2K/XP/NT,且已经安装jdk1.4.x 和 ANT工具)

 1 下载安装Jacorb2.1
     
  • http://www.jacorb.org/download.html下载JacORB_2_1-compact.zip(已经编译的版本),解压缩到磁盘上,例如C:JacORB_2_1 .
         
  • 然后, 为了在调试时可以找到有关包和jacorb.properties配置文件,需要在系统环境变量中设置  classpath=.;C:JacORB_2_1idl.jar;C:JacORB_2_1jacorb.jar;C:JacORB_2_1classes;  另外,为了方便使用ant和命令行工具,在path中加入C:JacORB_2_1in
         
  • 接着,把C:JacORB_2_1etc目录下的jacorb_properties.template复制到C:JacORB_2_1classes目录下,并更名为jacorb.properties
         
  • 在Corba中命名服务是非常重要的, 编辑jacorb.properties文件,设置其中的 ORBInitRef.NameService=file:/c:/NS_Ref(这里是示例,当然可以为任何httpURL或者其他路径),这个NS_Ref文件会在启动命名服务时生成.该配置文件其余部分保留默认值即可.
         
     2 测试命名服务(NS,Naming Service)是否可以正常启动
        
  •  在dos窗口下输入 
          ns c:/NS_Ref
        如果出现下面的输出说明已经正常启动
        
    1. [configuration loaded from classpath resource file:/C:/JacORB_2_1classesjacorb.properties]
    2.         JacORB V 2.1, www.jacorb.org
    3.         (C) Gerald Brose, XTRADYNE TechnologiesFU Berlin, 16-Feb-2004
    4.     [jacorb.orb.intercept] INFO : InterceptorManager started with 0 SIs, 0 CIs and 1
    5.         IORIs
    6.     [jacorb.naming] INFO : NS up
    7.     [jacorb.orb] INFO : ORB run


       如果没有任何输出,可能是由于你的jacorb.properties文件没有放到classpath所在的目录下。
       如果没有正确启动NS,运行下面的demo时会出现下面的异常
       
    1. [jacorb.orb.intercept] INFO : InterceptorManager started with 0 SIs, 0 CIs and 1 IORIs
    2.    ....
    3.    [jacorb.giop] INFO : ClientConnectionManager: created new conn to target 192.168.4.161:4089
    4.    [jacorb] ERROR : java.net.ConnectExceptionConnection refused: connect

        
     3 idl编译DEMO下的grid例子
       观察
       正确启动NS后,DOS窗口转到demo/grid目录下执行ant   (如果ant没有安装则不会编译)   
         C:JacORB_2_1demogrid >    ant     
       这样会进行idl编译server.idl文件,在C:JacORB_2_1demogridgenerated下生成corba所需的源文件   
       同时,ant会编译所有的java源文件, C:JacORB_2_1classes下面生成.class文件     
    4 运行grid例子,本例实现了一个简单的服务.
        
  • 4.1 首先参考第2步验证是否ns 已经正常启动.
        
  • 4.2 启动grid server
        在dos窗口中执行
             jaco demo.grid.Server
             或者
             jaco demo.grid.TieServer
        正常时输出:
        
    1. [configuration loaded from classpath resource file:/C:/JacORB_2_1classesjacorb.properties]
    2.        JacORB V 2.1, www.jacorb.org
    3.           (C) Gerald Brose, XTRADYNE TechnologiesFU Berlin, 16-Feb-2004
    4.             [jacorb.orb.intercept] INFO : InterceptorManager 
    5. started with 0 SIs, 0 CIs and 1 IORIs
    6.             [jacorb.poa] INFO : oid: 
    7.     00 11 39 3D 4A 03 47 32 01 07 
    8. B                            ..9=J.G2...
    9.             object is activated
    10.             [jacorb.giop] INFO : ClientConnectionManager: 
    11. created new conn to target 192.168.4.161:4261
    12.         [jacorb.iiop.conn] INFO : Connected to 192.168.4.161:4261 
    13. from local port 4282
    14.         [jacorb.orb] INFO : ORB run    
            
        这时在ns输出窗口可以看到:
         [jacorb.naming] INFO : Bound name: grid.example     
        另外,可以通过Jbuilder等IDE工具建立一个工程来运行demo.grid.Server,须指定vm参数-Djava.endorsed.dirs="C:JacORB_2_1lib",结果一致.
        
        
  • 4.3 启动grid client端
        jaco demo.grid.Client    
        输出结果:
        
    1. Height =  31
    2.         Width = 14
    3.         Old value at (30,13): 0.21
    4.         Setting (30,13) to 470.11
    5.         New value at (30,13): 470.11
    6.         MyException, reason: This is only a test exception, no harm done :-)


    看到这个结果说明已经成功运行了grid例子.

    5 对照源码,下面我们将简单分析Grid例子:

    JacORB的应用开发一般分为以下五步:
        1.写IDL接口定义
        2.编译IDL接口定义生成Java类
        3.实现步骤2中生成的接口
        4.写服务器启动类,并注册到ORB
        5.写客户端去获取服务对象引用

    5.1  首先编写server.idl文件
    关于编写IDL参考docProgrammingGuide.pdf文档 
    1. // grid.idl
    2. // IDL defintion of a 2-D grid:
    3. module demo
    4. {
    5.     module grid 
    6.     { 
    7.         interface MyServer
    8.         {
    9.              typedef fixed <5,2> fixedT;
    10.            readonly attribute short height;  // height of the grid
    11.              readonly attribute short width;   // width of the grid
    12.            void set(in short n, in short m, in fixedT value);
    13.              fixedT get(in short n, in short m);
    14.              exception MyException
    15.              {
    16.                string why;
    17.              };
    18.             short opWithException() raises( MyException );
    19.        };
    20.     };
    21. };

     5.2 利用工具 binidl.bat来编译server.idl
         idl -d ../.. server.idl
         
     5.3 实现接口
         public class gridImpl extends MyServerPOA
         
         填写构造函数,以及接口等方法,如:
         public gridImpl()
         public java.math.BigDecimal get(short n, short m)
         public void set(short n, short m, java.math.BigDecimal value)
         
     5.4 编写服务器
              这一步要写一个类来调用gridImpl类,并将其注册到POA,这样远程对象才能通过
    MyServer接口来访问它。
            1)初始化orb对象。
            org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
            2)使用POAHelper来实例化为POA的引用。
            org.omg.PortableServer.POA poa = org.omg.PortableServer.POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
            3)激活该对象,否则还处于“保持状态,”无法处理任何请求。
            poa.the_POAManager().activate();
            4)通过POA将一个Java对象转化成一个CORBA对象。
            org.omg.CORBA.Object o = poa.servant_to_reference(new gridImpl());
            5)使nc绑定该对象的引用(这一过程通过命名服务器来完成),注意使对象的名称作为bind()的参数
        
    1. NamingContextExt nc =  NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));
    2.     nc.bind( nc.to_name("grid.example"), o);

     5.5 编写客户端调用服务程序
        1)  创建orb对象
        org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null);
        2) 客户端通过命名服务器获取一个"grid"服务的引用
        
    1. NamingContextExt nc = NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));
    2.     grid = MyServerHelper.narrow(nc.resolve(nc.to_name("grid.example")));

        3) 使用grid对象进行我们的计算。
        
     《入门篇.完》
         
  • JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
    Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
    Copyright © 2002-2005 JSPCN.net. All rights reserved.
    JSP中文网    备案序号:蜀ICP备05001583号
    成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号