<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-37  評論-58  文章-4  trackbacks-0

            新公司要求用corba做電信項目,汗,以前偶是寫J2EE的,框架用多了,忽然轉(zhuǎn)做corba,覺得很不習慣,壓力也很大。網(wǎng)上找了很多,但都沒有合適的corba程序,自己用了兩天才寫了第一個hello world程序,不知道是自己的學習能力下降,還是corba的學習曲線太陡峭。。。以下就是我寫的第一個corba程序,好了,不廢話了,轉(zhuǎn)入正題:
             關(guān)于corba的介紹我就不多說了,網(wǎng)上那么多專家給的概念,自己google一下,隨便點個了解下就行了。
             我們公司用的IDL編譯器是Orbacus,首先寫一個IDL文件,文件名為:hello.idl以下是源碼:
    //IDL
       module test{
            interface Hello{
                 void sayHello();
            };
        };
    將IDL文件copy到編譯器的bin目錄下,然后打開MS-DOS窗口,轉(zhuǎn)換到你的編譯器的bin目錄下輸入命令jidl,如圖:
    jidl命令的參數(shù)最好輸入文件全名(包括后綴),這時候會在該目錄下生成一個test目錄,在test目錄下創(chuàng)建一個Hello_Impl.java文件,代碼如下:
    package test;

    public class Hello_impl extends HelloPOA {
     public void sayHello(){
      System.out.println("Hello World");
     }
    }
    它實現(xiàn)了sayHello()方法。


    接著創(chuàng)建一個工具類,文件名為ORBImpl.java(注意包目錄結(jié)構(gòu)哦),代碼如下:
    package test.common;

    import java.io.BufferedReader;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Properties;

    import org.omg.CORBA.ORB;
    import org.omg.CORBA.Object;
    import org.omg.PortableServer.POA;
    import org.omg.PortableServer.POAHelper;
    import org.omg.PortableServer.POAManager;

    import test.Hello;
    import test.HelloHelper;

    public class ORBImpl {
     
     private ORB orb;
     private POA poaRoot;
     private POAManager poaManager;
     private Object poaObj;
     
     public ORBImpl(){
      orb = null;
      poaRoot = null;
      poaManager = null;
      poaObj = null;
     }
     
     public void initEnv(String[]args){
      Properties props = System.getProperties();
      props.put("org.omg.CORBA.ORBClass","com.ooc.CORBA.ORB");
      props.put("org.omg.CORBA.ORBSingletonClass","com.ooc.CORBA.ORBSingleton");
      
      try{
       orb = ORB.init(args,props);
      }catch(Exception ex){
       ex.printStackTrace();
      }
     }
     
     public void initServer(){
      try{
       poaObj = orb.resolve_initial_references("RootPOA");
       poaRoot = POAHelper.narrow(poaObj);
       poaManager = poaRoot.the_POAManager();
      }catch(Exception ex){
       ex.printStackTrace();
      }
     }
     
     public void serverGo(Hello hello){
      try{
       String fileName = "Hello.ref";
       String strClient = orb.object_to_string(hello);
       PrintWriter out = new PrintWriter(new FileOutputStream(fileName));
       out.print(strClient);
       out.close();
      }catch(IOException ex){
       ex.printStackTrace();
      }
     }
     
     public void clientGo(){
      Object clientObj = null;
      try{
       String fileName = "Hello.ref";
       BufferedReader in = new BufferedReader(new FileReader(fileName));
       String strClient = in.readLine();
       clientObj = orb.string_to_object(strClient);
      }catch(IOException ex){
       ex.printStackTrace();
      }
      Hello hello = HelloHelper.narrow(clientObj);
      hello.sayHello();
     }
     
     public void destroy(){
      if(orb != null){
       try{
        orb.destroy();
       }catch(Exception ex){
        ex.printStackTrace();
        System.exit(0);
       }
      }
     }
     
     public void active(){
      try{
       poaManager.activate();
       orb.run();
      }catch(Exception ex){
       ex.printStackTrace();
       System.exit(0);
      }
     }
     
     public ORB getORBRoot(){
      return this.orb;
     }
    }


    然后創(chuàng)建Server.java文件,代碼如下:
    package test;

    import test.common.ORBImpl;

    public class Server {
     public static void main(String[]args){
      ORBImpl server = new ORBImpl();
      server.initEnv(args);
      server.initServer();
      
      Hello_impl helloImpl = new Hello_impl();
      Hello hello = helloImpl._this(server.getORBRoot());
      server.serverGo(hello);
      server.active();
      server.destroy();
     }
    }


    終于到了最后一步了,創(chuàng)建客戶端文件Client.java,代碼如下:
    package test;

    import test.common.ORBImpl;

    public class Client {
     
     public static void main(String[]args){
      ORBImpl client = new ORBImpl();
      client.initEnv(args);
      client.clientGo();
      client.destroy();
     }
    }

    打開MS-DOS窗口,轉(zhuǎn)換到你的編譯器的bin目錄下,輸入命令javac test/*.java編譯所有test目錄下的文件:


    接著輸入命令java test.Server啟動服務(wù)器:


    重新開啟一個窗口,輸入java test.Client啟動客戶端調(diào)用服務(wù)器方法:


    接著會在服務(wù)器的窗口打印出結(jié)果:



    在編譯運行的時候,記得使用JDK1.3版本的那樣可以直接設(shè)置classpath,如果是1.4版本,記得要使用java -Xbootclasspath/p:命令將OB.jar包含進來(偶就是用的1.4的。。。)

    這篇文章希望能對你有用哦~
    posted on 2007-07-27 12:51 楓中玎玲 閱讀(982) 評論(3)  編輯  收藏 所屬分類: Corba

    評論:
    # re: 第一個corba的Hello World~ 2007-08-12 17:23 | dreamstone
    可以試試ice還不錯  回復  更多評論
      
    # re: 第一個corba的Hello World~[未登錄] 2008-08-27 13:55 | 陽光
    OB.jar是從哪里獲得的?我下載了一個orbacus,但里面沒有l(wèi)ib包啊  回復  更多評論
      
    # re: 第一個corba的Hello World~ 2012-09-13 20:10 | 長沙婚慶公司
    寫的很不錯。。 前來支持一下啦。。 http://www.jiehunsa.com  回復  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲av色香蕉一区二区三区| 免费A级毛片无码免费视| 国产精品国产午夜免费福利看| 亚洲精品福利网泷泽萝拉| 国内精品一级毛片免费看| 亚洲精品美女久久久久99| 91视频免费网站| 亚洲av无码精品网站| 久久永久免费人妻精品| 亚洲视频网站在线观看| 日本视频一区在线观看免费| 亚洲乱码卡三乱码新区| 毛片免费vip会员在线看| 亚洲av日韩av永久无码电影| 国产免费av片在线播放| 免费人成大片在线观看播放| 亚洲精品国产自在久久| 免费毛片在线看不用播放器 | jlzzjlzz亚洲jzjzjz| a级毛片无码免费真人| 亚洲狠狠色丁香婷婷综合| 国产伦精品一区二区三区免费下载| 激情吃奶吻胸免费视频xxxx| 亚洲午夜久久久久妓女影院| 日韩在线永久免费播放| 亚洲一线产品二线产品| 亚洲人妻av伦理| 中文字幕亚洲免费无线观看日本| 亚洲AV成人一区二区三区在线看 | 福利免费在线观看| 国产成人精品一区二区三区免费| 国产免费女女脚奴视频网| 中日韩亚洲人成无码网站| 国产精品国产午夜免费福利看| 一级特黄录像视频免费| 久久久无码精品亚洲日韩蜜桃| 国产国产人免费视频成69堂| 亚洲av无码一区二区三区在线播放| 亚洲伊人成无码综合网| 蜜臀98精品国产免费观看| 精品国产亚洲AV麻豆|