這兩天開發ICE服務端,client是別人寫好的,根據接口寫了server後,client鏈接時報異常:nonexxxx,記不清了,搞半天才發現是id字符串不匹配。總結起來是須要IP、Port、名稱都一致才能正常通訊。spa
相似下面的代碼:server
Ice.Communicator ic = null;
try {
//初始化鏈接,args能夠傳一些初使化參數,如鏈接超時時間,初使化客戶鏈接池的數量等
ic = Ice.Util.initialize(args);
//建立名爲SimplePrinterAdapter的適配器,使用缺省的協議(TCP/IP偵聽端口爲10000的請求)
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000");
//實例化一個PrinterI對象,爲Printer接口建立一個服務對象
Ice.Object object = new PrinterI();
//將服務單元增長到適配器中,並給服務對象指定名稱爲SimplePrinter,用於惟一肯定一個服務單元
adapter.add(object, Ice.Util.stringToIdentity("SimplePrinter"));
//激活適配器,這樣作的好處是能夠等到全部資源就位後再觸發
adapter.activate();
//讓服務在退出以前,一直持續對請求的監聽
ic.waitForShutdown();
}對象
catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
} 接口