1. 程式人生 > >ICE Java語言開發入門教程

ICE Java語言開發入門教程

一、開發環境與工具

1、Eclipse Mars.1 (4.5.1) 

2、Windows OS

3、下載Ice-3.6.1.msi並直接安裝即可。官網地址:https://zeroc.com/download/Ice/3.6/ 。

配置環境變數:


在Path裡新增:%ICE_HOME%\bin;

最後,在命令視窗輸入:slice2java -v    如果輸出版本號表示安裝成功。

4、安裝Eclipse外掛Ice Builder,如下圖所示:


如下圖所示,如果出現Ice Builder表示安裝成功,這時設定SDK Location為上面的安裝路徑即可。


二、開始編寫程式 1、建一個Java工程:ice_hello 2、建立slice資料夾,並在其目錄下建立:Hello.ice,內容如下:
[["java:package:com.rain.service"]] // 定義java包名
module demo
{
	interface Hello
	{
		string sayHello(string s);
	};
};
右單擊工程ice_hello->Ice Builder->Add Ice Builder ,如果沒有錯誤將會自動生成generated資料夾及內容,如下圖所示:

3、寫一個服務介面實現類,程式碼如下:
package com.rain.service.demo.impl;

import com.rain.service.demo._HelloDisp;

import Ice.Current;

public class HelloI extends _HelloDisp {
	private static final long serialVersionUID = -3966457693815687559L;

	@Override
	public String sayHello(String s, Current __current) {
		return "Hello " + s;
	}

}
4、寫一個服務啟動類,程式碼如下:
package com.rain.service.demo.server;

import com.rain.service.demo.impl.HelloI;

public class Server {

	public static void main(String[] args) {
		int status = 0;
		Ice.Communicator ic = null;
		try{
			System.out.println("Server starting...");
			ic = Ice.Util.initialize(args);
			Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("HelloAdapter", "default -p 10000");
			Ice.Object object = new HelloI();
			adapter.add(object, ic.stringToIdentity("hello"));
			adapter.activate();
			System.out.println("Server start success.");
			ic.waitForShutdown();
		}catch(Ice.LocalException e){
			e.printStackTrace();
			status = 1;
		}catch(Exception e){
			System.err.println(e.getMessage());
			status = 1;
		}
		if(ic != null){
			try{
				ic.destroy();
			}catch(Exception e){
				System.err.println(e.getMessage());
				status = 1;
			}
		}
		System.exit(status);
	}

}
5、寫一個客戶端類,程式碼如下:
package com.rain.service.demo.client;

import com.rain.service.demo.HelloPrx;
import com.rain.service.demo.HelloPrxHelper;

public class Client {

	public static void main(String[] args) {
		int status = 0;
		Ice.Communicator ic = null;
		try{
			ic = Ice.Util.initialize(args);
			Ice.ObjectPrx base = ic.stringToProxy("hello:default -p 10000");
			HelloPrx hello = HelloPrxHelper.checkedCast(base);
			if(hello == null){
				throw new Error("Invalid proxy");
			}
			String s = hello.sayHello("World!");
			System.out.println(">>"+s);
		}catch(Ice.LocalException e){
			e.printStackTrace();
			status = 1;
		}catch(Exception e){
			System.err.println(e.getMessage());
			status = 1;
		}
		if(ic != null){
			try{
				ic.destroy();
			}catch(Exception e){
				System.err.println(e.getMessage());
				status = 1;
			}
		}
		System.exit(status);
	}

}
6、程式包結構如下圖所示:

7、測試 啟動Server類-->啟動Client類-->控制檯輸出:Hello World!