ICE Java語言開發入門教程
阿新 • • 發佈:2018-11-05
一、開發環境與工具
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,如下圖所示:
二、開始編寫程式 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、寫一個服務介面實現類,程式碼如下:
4、寫一個服務啟動類,程式碼如下: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; } }
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!