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!




猜你喜欢

转载自blog.csdn.net/god_wot/article/details/50332997
ice