ZeroC ICE之 Java语言开发入门教程

本文详细介绍如何使用Ice RPC框架搭建一个简单的Java服务端与客户端通信应用。从开发环境配置到服务端与客户端的具体实现,包括切片文件(slice file)定义、服务接口实现、服务启动过程以及客户端调用流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、开发环境与工具

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!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值