Java-ICE入門教程(2-2:Java執行個體)__Java

來源:互聯網
上載者:User
1.安裝ICE 下載地址: https://zeroc.com/download.html 需要配置環境變數: classPath添加: %ICE_HOME%/lib/db.jar;%ICE_HOME%/lib/Ice.jar   path添加:%ICE_HOME%/bin;
cmd命令: slice2java  出現如下畫面表示安裝成功: .

3.手寫ICE檔案,注意尾碼名為 .ice:  message.ice,檔案內容如下:
module  message {         interface messageDemo{//介面類             int maxNum(int a,int b);//介面方法,參數和傳回值為int             }; };
4.產生 JAVA檔案: cmd:slice2java  message.ice



5.接下來要寫介面實作類別,需要繼承這麼一個類:_XXXXXXXXDisp: package ice.message.impl; import Ice.Current;  import message._messageDemoDisp; public class MessageI extends _messageDemoDisp {  @Override  public int maxNum(int a, int b, Current __current) {   // TODO Auto-generated method stub     if(a>b)    return a;   else if(a<b)    return b;   else {    System.out.println("妹的,他倆居然一樣大。。。");    return 0;   }  }
}

6.服務端代碼:

package ice.message.server; import ice.message.impl.MessageI; import com.bean.PrinterI; public class IceInit {  public static void init()  {    int status = 0;            Ice.Communicator ic = null;            try {                //初使化串連,args可以傳一些初使化參數,如連線逾時時間,初使化客戶串連池的數量等                ic = Ice.Util.initialize();                //建立名為meaaageDemoAdapter的適配器,並要求適配器使用預設的協議(TCP/IP偵聽連接埠為10000的請求)                Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("meaaageDemoAdapter", "default -h 10.0.67.106 -p 10000");                //執行個體化一個MessageI對象,為Message介面建立一個服務物件                Ice.Object object = new MessageI();                //將服務單元增加到適配器中,並給服務物件指定名稱為meaaageDemo,該名稱用於唯一確定一個服務單元                adapter.add(object, Ice.Util.stringToIdentity("meaaageDemo"));                //啟用適配器,這樣做的好處是可以等到所有資源就位後再觸發                adapter.activate();                 System.out.println("已啟動 meaaageDemoAdapter  default -h 10.0.67.106 -p 10000");              //讓服務在退出之前,一直持續對請求的監聽                ic.waitForShutdown();            } catch (Ice.LocalException e) {                e.printStackTrace();                status = 1;            } catch (Exception e) {                System.err.println(e.getMessage());                status = 1;            }            if (ic != null) {                // Clean up                //                try {                    ic.destroy();                } catch (Exception e) {                    System.err.println(e.getMessage());                    status = 1;                }            }            System.exit(status);    }   }

7:用戶端調用代碼:
package ice.message.client; import java.lang.reflect.Method; public class IceClient {  public int  maxNum(int a,int b)  {     int status = 0;       int resultNum = 0;          Ice.Communicator ic = null;            try {                //初使化                ic = Ice.Util.initialize();                //傳入遠程服務單元的名稱、網路通訊協定、IP及連接埠,擷取Printer的遠程代理,這裡使用的stringToProxy方式                Ice.ObjectPrx objectPrx = ic.stringToProxy("meaaageDemo:default -h 10.0.67.106  -p 10000");                //通過checkedCast向下轉換,擷取Printer介面的遠程,並同時檢測根據傳入的名稱擷取的服務單元是否Printer的代理介面,如      果不是則返回null對象                      Method method = objectPrx.getClass().getMethod("maxNum",   new Class[] {Integer.class,Integer.class});                         resultNum= (Integer) method.invoke(objectPrx, new Object[] {a,b});                      } catch (Ice.LocalException e) {                e.printStackTrace();                status = 1;            } catch (Exception e) {                System.err.println(e.getMessage());                status = 1;            }            if (ic != null) {                // Clean up                //                try {                    ic.destroy();                } catch (Exception e) {                    System.err.println(e.getMessage());                    status = 1;                }            }           // System.exit(status);     return   resultNum;  }   } ****************************藍色字型也可以這麼寫*,但是還是建議第一種方法********************************    message.messageDemoPrx  messageDemoPrx = message.messageDemoPrxHelper.checkedCast(base);                if (messageDemoPrx == null) throw new Error("Invalid proxy");                //把Hello World傳給服務端,讓服務端列印出來,因為這個方法最終會在服務端上執行                resultNum=    messageDemoPrx.m

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.