前几天熟悉项目时,看到项目要用到ice因此就写了一个ice版本的helloworld程序看似简单但是还是耗费了不少的经历.
首先第一点要确认你的机器上面已经安装了ice 我安装的是ice3.4.2 建立一个名为slice的文件夹最好用集成开发环境比如myeclipse
设置好你的环境变量ICE_HOME 设置为你的ice的安装目录比如我的是C:\Program Files (x86)\ZeroC\Ice-3.4.2
刚才说到建立一个slice的文件夹里面建立一个Printer.ice的文件
这个Printer.ice文件里面定义了一个接口里面定义了一个add方法和一个printString的方法
interface{
void printString(String s);
void add(int a ,int b);
}
然后进行对这个ice文件的编译我用的是java ice应用
首先进入你的电脑的slice文件的那个地方比如我的就是D:\Workspaces\hlw\TestIce\slice
然后打开命令行执行mkdir aaa 这句话的意思是建立一个名为aaa的文件夹 然后输入slice2java --output-dir aaa Printer.ice这样就会在aaa文件夹下出现很多java源文件
然后我们就可以正式进行客户端调用服务端的开发了
首先我们把刚刚ice自己生成的java文件用集成开发环境装入一个包中我用的是myeclipse
比如com.sjy
然后建立一个名为PrinterI.java的类当然名字可以随便取
import Ice.Current;
import com.energyfuture._PrinterDisp;
public class PrinterI extends _PrinterDisp {
public void add(int a, int b, Current current) {
System.out.println(a + b);
}
public void printString(String s, Current current) {
System.out.println(s);
}
}
这里注意_PrinterDisp这个类是ice自己生成的
然后是Server.java
public class Server {
public static void main(String[] args) {
int status = 0;
Ice.Communicator ic = null;
try {
ic = Ice.Util.initialize(args);
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("SimplePrinterAdapter","default -p 10000");
Ice.Object object = new PrinterI();
adapter.add(object, Ice.Util.stringToIdentity("SimplePrinter"));
adapter.activate();
ic.waitForShutdown();
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
}catch (Exception e){
System.err.println(e.getMessage());
}finally{
if(ic != null){
ic.destroy();
}
}
System.exit(status);
}
}
然后是client端
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("SimplePrinter:default -p 10000");
PrinterPrx printer = PrinterPrxHelper.checkedCast(base);
if(printer == null){
System.err.println("Ivalid proxy");
}
printer.add(1, 2);
printer.printString("Hello World");
} catch (Ice.LocalException e) {
status = 1;
e.printStackTrace();
}catch (Exception e) {
status = 1;
System.err.print(e.getMessage());
}finally{
if(ic != null){
ic.destroy();
}
}
System.exit(status);
}
}
运行的时候直接run as java application注意先起server在起client而且一定要等到server端完全起起来再起client端
好了至此一个简单的ice客户端调用服务器端的小例子已经做好了.
再复杂的技术也是要先从helloworld写起嘛
分享到:
相关推荐
这个"用JAVA写的ICE小例子(类似聊天室)"是一个基础的ICE应用,旨在演示如何通过ICE实现在客户端和服务器端之间的文本消息传递,类似于一个简单的聊天室功能。 首先,ICE的核心概念是代理(Proxy)和骨架...
ICE中间件支持多种编程语言,如C++、Java、Python等,使得不同语言间的交互变得更加容易。 **ICE中间件的核心概念** 1. **对象接口**: ICE中的对象接口定义了服务提供者和消费者之间的通信协议。这些接口是接口...
### ICE中间件教程知识点梳理 #### 一、ICE概述与结构 **1.1 ICE概述** ICE (Internet Communication Engine) 是一种高性能、可扩展的中间件框架,它为分布式应用程序提供了一种简单而强大的通信机制。ICE支持...
这个例子通常会展示如何创建ICE服务器,定义接口,实现服务,以及在客户端调用这些服务。通过这个过程,读者可以了解ICE的编译器(icecpp)如何将接口定义转换为可执行代码,以及如何使用ICE运行时库连接客户端和...
客户端方面,同样需要导入转换后的JAVA代码库,创建代理对象,通过代理调用服务器的方法。ICE提供了一套完整的异常处理机制,确保在网络不稳定或服务器出错时,能够优雅地处理错误。 ICE还支持多线程和并发处理,...
Ice是一个全面的解决方案,用于构建分布式系统,它支持多种编程语言,如C++、Java、Python等。Ice的核心是它的接口定义语言(IDL),它允许开发者定义跨语言、跨平台的接口,实现数据类型的自动序列化和反序列化。 ...
ICE(Internet Communications Engine)是一个由ZeroC公司开发的中间件产品,旨在提供一个面向对象的中间件平台,适用于异构环境。ICE的目标是解决传统中间件如CORBA和COM/DCOM/COM+的缺陷,并在性能、易用性、安全...
ICE DEMO的这个例子展示了如何使用ICE来构建一个简单的服务端,该服务端提供了一个接口,允许客户端调用并执行字符串反转操作。在实际应用中,ICE可以被用于更复杂的分布式系统设计,如大型网络服务、分布式计算任务...
在Ice的上下文中,这可能意味着创建一个Ice服务器,该服务器暴露一个接口,客户端可以通过这个接口调用方法并接收到"Hello, World!"的响应。 【标签】"ice java helloworld" 明确地指出了涉及的技术和主题。"ice...
接下来,创建一个Eclipse项目,导入生成的Java类,编写客户端和服务端代码,最后运行示例程序,验证ICE的通信功能。 #### 7. ICE集群:负载均衡及容错 ICE还支持集群部署,实现负载均衡和容错。通过配置ICE服务...
在这个例子中,客户端将是一个简单程序,它使用ICE库连接到服务器,并通过调用特定接口发送“Hello, World”消息。客户端代码通常会包含以下步骤: - 导入ICE库。 - 初始化ICE环境,设置连接参数。 - 创建连接到...
Ice-3.5.1是其在201X年发布的一个稳定版本,包含了丰富的功能和改进,对于学习和应用分布式系统开发具有重要的价值。本文将深入探讨Ice-3.5.1的核心特性、主要组件以及源码分析。 一、Ice的核心特性 1. 跨语言支持...
ICE中间件的核心在于其代理(Proxy)和骨架(Skeleton)机制,它允许客户端通过代理与服务器端的对象进行透明通信。3.4.1版本的Demo展示了如何创建和使用这些代理和骨架,包括基本的调用、异步调用以及事件处理等。...
总的来说,"ICE入门代码"提供了一个学习和实践ICE的基础平台,通过这个例子,你可以掌握如何在Windows环境下设置开发环境,编写接口定义,生成代码,实现服务,以及建立客户端和服务端的连接。随着对ICE的深入理解和...
- **分布式计算**:ICE使得不同计算机上的程序能够互相通信,共享数据和执行任务,如同在一个进程中一样。 - **接口定义语言(IDL)**:ICE的IDL允许开发者定义服务接口,这些接口可以在多种语言间无缝交互。 - *...