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

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


    接著創建一個工具類,文件名為ORBImpl.java(注意包目錄結構哦),代碼如下:
    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;
     }
    }


    然后創建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();
     }
    }


    終于到了最后一步了,創建客戶端文件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窗口,轉換到你的編譯器的bin目錄下,輸入命令javac test/*.java編譯所有test目錄下的文件:


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


    重新開啟一個窗口,輸入java test.Client啟動客戶端調用服務器方法:


    接著會在服務器的窗口打印出結果:



    在編譯運行的時候,記得使用JDK1.3版本的那樣可以直接設置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,但里面沒有lib包啊  回復  更多評論
      
    # re: 第一個corba的Hello World~ 2012-09-13 20:10 | 長沙婚慶公司
    寫的很不錯。。 前來支持一下啦。。 http://www.jiehunsa.com  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 宅男666在线永久免费观看| 美女视频黄a视频全免费网站色窝| 蜜桃成人无码区免费视频网站| 亚洲人成在线播放网站| 一级做a爰片久久毛片免费看| 亚洲综合另类小说色区色噜噜| igao激情在线视频免费| 国产亚洲精品无码专区| 大地资源网高清在线观看免费| 亚洲gv猛男gv无码男同短文| 久久国产精品免费视频| 亚洲天堂一区二区三区四区| 亚洲精品色午夜无码专区日韩| 国产在线观看xxxx免费| 亚洲成在人天堂在线| 亚洲视频免费播放| 亚洲性线免费观看视频成熟| 日本不卡视频免费| free哆拍拍免费永久视频| 国产成人综合亚洲AV第一页| 暖暖免费日本在线中文| 亚洲精品无码久久毛片波多野吉衣| 美女视频黄的全免费视频网站| 亚洲影院天堂中文av色| 亚洲国产精品国产自在在线 | 国产亚洲成av人片在线观看| 久久久精品免费国产四虎| 亚洲激情校园春色| 国产又粗又猛又爽又黄的免费视频 | 久久亚洲色WWW成人欧美| 中文字幕亚洲专区| 很黄很黄的网站免费的| 十八禁的黄污污免费网站| 久久九九亚洲精品| 女人张腿给男人桶视频免费版 | 亚洲国产一区在线观看| 免费在线观看a级毛片| 久久久精品免费视频| 亚洲综合小说另类图片动图| 亚洲午夜久久久久妓女影院| 999在线视频精品免费播放观看|