<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 楓中玎玲 閱讀(983) 評論(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  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 久久亚洲精品视频| 免费**毛片在线播放直播| 亚洲熟女一区二区三区| 一区在线免费观看| 中文字幕亚洲激情| 亚洲第一视频在线观看免费| 亚洲另类激情专区小说图片| 一级特黄a免费大片| 亚洲日韩精品A∨片无码| a级片免费在线播放| 亚洲视频中文字幕| 亚洲毛片免费观看| 亚洲国产日韩精品| 日本大片在线看黄a∨免费| 国产精品亚洲专区在线播放| 亚洲国产精品日韩| 在线观看免费无码视频| 亚洲av日韩av高潮潮喷无码| 97碰公开在线观看免费视频| 亚洲av无码成人精品国产| 亚洲JIZZJIZZ中国少妇中文| 中文字幕在线视频免费观看 | 美女被免费视频网站a国产| 久久亚洲AV成人无码国产电影| 免费一看一级毛片全播放| 中文字幕永久免费| 亚洲三级在线免费观看| 国产成人免费a在线资源| 中文毛片无遮挡高清免费| 亚洲人成电影在线观看网| 国产小视频在线免费| 日本三级在线观看免费| 亚洲Av高清一区二区三区| 国产v片免费播放| 久久久久国产免费| 日韩国产欧美亚洲v片| 久久精品亚洲男人的天堂| 99国产精品视频免费观看| 亚洲a∨国产av综合av下载| 亚洲人成网站在线播放vr| 成年轻人网站色免费看|