程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> ICE 2.0學習筆記1(HelloWorld)

ICE 2.0學習筆記1(HelloWorld)

編輯:關於JAVA

Hello.ice #ifndef SIMPLE_ICE#define SIMPLE_ICE//名字空間 or 包名module demo.slice.Hello{ interface Hello{ void printString(string s); };};

#endif

服務器: HelloI.Java

package demo.ice.Hello.server;

import demo.slice.Hello._HelloDisp;import Ice.Current;

/** * @author MudfishCN * * servant class: HelloI * _HelloDisp 基類由slice2Java編譯器生成,它是一個抽象類。 * _HelloDisp 抽象類包含一個printString()方法。 */public class HelloI extends _HelloDisp {

/* (non-Javadoc) * @see demo._HelloOperations#printString(Java.lang.String, Ice.Current) */ public void printString(String s, Current __current) { // TODO Auto-generated method stub System.out.println(s); }

}

HelloServer.Java

package demo.ice.Hello.server;

import Ice.LocalException;

/** * @author MudfishCN * version: 1.0.1 */public class HelloServer { public static void main(String[] args) { // 定義status變量,用來控制服務器. int status = 0; Ice.Communicator ic = null; //聲明一個Communicator 對象ic try { // 初始化Ice運行時 ic = Ice.Util.initialize(args); /* * 創建一個對象適配器(ObjectAdapter)對象IOAdapter,並初始化之。 * 參數"HelloWorldAdapter":表示適配器的名字。 * 參數"default -p 10000":表示適配器使用缺省協議(TCP/IP)在端口10000處監聽到來的請求。 * 服務器配置完成. */ Ice.ObjectAdapter IOAdapter = ic.createObjectAdapterWithEndpoints( "HelloWorldAdapter", "default -p 10000");

/* * 為Hello接口創建一個servant. */ Ice.Object IObject = (Ice.Object) new HelloI(); /* * 將新的servant添加到適配器, * 並將這個新的servant命名為"HelloWorld" */ IOAdapter.add(IObject, Ice.Util.stringToIdentity("HelloWorld")); /* * 激活適配器,以使服務器開始處理來自客戶的請求 */ IOAdapter.activate();

/* * 掛起發出調用的線程,直到服務器實現終止為止. * 或者是通過發出一個調用關閉運行時(run time)的指令來使服務器終止. */ ic.waitForShutdown(); } catch (LocalException e) { // 捕捉ICE運行時可能拋出的所有異常 e.printStackTrace(); status = 1; } catch (Exception e) { // 捕捉串常量 e.printStackTrace(); status = 1; } finally { if (ic != null) { ic.destroy(); } } System.exit(status); }}

HelloClIEnt.Java

package demo.ice.Hello.clIEnt;

import Ice.ObjectPrx;import Ice.Util;import demo.slice.Hello.HelloPrx;import demo.slice.Hello.HelloPrxHelper;

/** * @author MudfishCN */public class HelloClIEnt { public static void main(String[] args) { int status = 0; String s; //創建一個通信器的對象ic Ice.Communicator ic = null; try { // 初始化ICE運行時 ic = Util.initialize(args); /* * 獲取遠程對象的代理 * 創建一個代理對象,並用通信器的stringToProxy()方法初始化之。 * 參數:"HelloWorld:default -p 10000" * 表示: */ ObjectPrx base = ic.stringToProxy("HelloWorld:default -p 10000"); /* * 關鍵點 */ HelloPrx hello = HelloPrxHelper.checkedCast(base); //測試向下轉換是否成功。如果不成功拋出異常信息"Invalid proxy". if (hello == null) { throw new Error("Invalid proxy"); } //向服務器發送十條消息 for(int i=1;i<=10;i++){ s = "Hello,world!"+Integer.toString(i); hello.printString(s); } } catch (Ice.LocalException e) { e.printStackTrace(); status = 1; } catch (Exception e) { e.printStackTrace(); status = 1; } finally { if (ic != null) { //銷毀通信連接 ic.destroy(); } } System.exit(status); }}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved