首先介绍:
ICE是一个面向对象的中间件平台。从根本上讲,这意味着ICE提供了一些工具、API和库用以开发面向对象的客户端-服务器的应用程序。ICE应用程序适合于用在各种异构的环境中:客户端和服务器可以用不同的语言编写,能够运行在不同的操作系统、不同体系结构的机器上,可以用不同的网络技术进行通讯(大概10种以上)。这些程序的源代码可以在不同的开发环境之间移植。
在我看来其实是dcom和CORBA的封装。他和gearman和thrift类似。
一:
首先确保各个编译器安装成功。检测
Slice2java ,slice2cpp,slice2C#,slice2py,slice2vb,slice2rb等
开放端口默认开放10000
二编写Ice脚本:
module Demo{
interface Printer{
string printString(string s);
};
};
运行slice2java Demo.ice;
三,编写servant类的PrinterI:
public class PrinterI extends _PrinterDisp{
public String printString(String s, Current __current) {
// TODO Auto-generated method stub
StringBuilder sb=new StringBuilder(s);
s=sb.reverse().toString();
return s;
}
}
编写Server:
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 objcet = new PrinterI();// 创建servant对象
adapter.add(objcet, Ice.Util.stringToIdentity("simplePrinter"));// 适配器添加一个新的servant,给servant对象取个名字
adapter.activate();
System.out.println("connection success");
ic.waitForShutdown();
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.print(e.getMessage());
status = 1;
} finally {
if (ic != null) {
ic.destroy();
}
}
System.exit(status);
}
}
四,运行服务器端:在windows下建立的Java工程 打成ice_1.jar包放到Linux上运行
命令:java –cp ./Ice.jar:ice_1.jar Demo.Server//注意Ice.jar包放到ice_*.jar的同一个目录,(特别注意不要再按ctr+c在当前窗体运行客户端,按ctr+c它会中断服务器,NND这里把握搞得郁闷)
五,编写客户端(Java和PHP版)
Java版:
public class Client {
/**
* @param args
*/
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.out.println("invalid proxy");
}
String out = printer.printString("I love you");
System.out.println(out);
} catch (Ice.LocalException e) {
// TODO: handle exception
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.print(e.getMessage());
status = 1;
} finally {
if (ic != null) {
ic.destroy();
}
}
System.exit(status);
}
}
6,测试Java先:java –cp ./Ice.jar:ice_2.jar Demo.Client//把客户端打包成ice_2.jar,
分享到:
相关推荐
同时,这些源码也可以作为学习和理解ICE104规约实现的实例,帮助初学者更好地理解和运用该规约。 在实际应用中,ICE104Java解析源码可能被整合到一个更复杂的系统中,如SCADA(Supervisory Control And Data ...
由ZeroC公司开发,Ice支持多种编程语言,包括C++、Java、Python等,使得开发人员可以灵活选择适合项目需求的语言。Ice的核心理念是“简单、快速、可靠”,其设计目标是简化分布式系统开发,提高开发效率,并确保系统...
ICE提供了丰富的编程接口,支持多种语言,包括C++、Java、Python等,并且与VC6(Visual C++ 6.0)兼容,使得在Windows平台上开发ICE应用变得更加便捷。 在“ICE 代码实例 VC6”中,我们可以期待学习到以下关键知识...
在"Zeroc ice java eclipse project"中,我们看到的是一个使用Zeroc ICE在Java环境下用Eclipse开发的项目实例。这个项目包含了一些关键文件,下面我们将详细解析这些文件及其相关的知识点。 1. `ice_hello`:这可能...
在客户端,我们需要创建一个ICE的`Communicator`实例,然后通过它获取服务端的代理,调用`serve`方法,并处理返回的Response对象: ```java public class Client { public static void main(String[] args) { Ice...
【标题】"ice——java集群"涉及的核心技术是ZeroC的Ice(Internet Communications Engine),它是一种高效的、跨语言的中间件框架,专为构建分布式应用程序而设计。在Java环境中,Ice提供了一种强大的方式来实现高...
- **多语言支持**:ICE支持C++、C#、Java、Python等,方便在不同技术栈间协作。 2. **C++与ICE** - **C++绑定**:ICE为C++提供了丰富的API,开发者可以用C++编写服务器和客户端程序,利用ICE的特性进行网络通信。...
【Ice入门完整实例】是一个针对初学者的教程,旨在引导用户了解并掌握Ice中间件的基本用法和开发流程。在本实例中,我们将深入探讨Ice,一个强大的分布式对象框架,它提供了一种高效的、跨平台的方式来构建分布式...
**Java版IEC61850实例详解** 在电力自动化领域,IEC61850标准扮演着至关重要的角色。它定义了一套用于变电站自动化系统的通信协议,旨在实现设备间的互操作性和数据共享。这个标准不仅包含了数据模型,还涵盖了服务...
ICE支持多种编程语言,包括C++、Java和Python等,提供了异步模式(AMD:Asynchronous Method Dispatch)和AMI(Asynchronous Method Invocation)来处理并发和非阻塞的网络通信。 标题"ice异步模式源码实例"指的是...
Ice 是一种针对客户端和服务器进行通信的面向对象的中间件平台。Ice 为构建面向对象的客户-服务器应用提供了工具、API 和库支持。客户和服务器通信双方可以用不同的编程...本代码为ice同步调用和异步调用实例代码。
ICE 提供了多种语言的绑定,包括 C++、Java、Python 等,使得跨平台的开发变得更加简单。在给定的 "ICE 简单客户端和服务端实例" 中,我们有两个关键组件:consoleClient 和 consoleServer,它们是 ICE 框架下的基础...
// Communicator实例,是ice run time的主句柄 Ice.Communicator ic = null; try { // 调用Ice.Util.Initialize()初始化Ice run time System.out.println("初始化ice run time..."); ic = Ice.Util.initialize(args)...
Ice是一个全面的解决方案,用于构建分布式系统,它支持多种编程语言,如C++、Java、Python等。Ice的核心是它的接口定义语言(IDL),它允许开发者定义跨语言、跨平台的接口,实现数据类型的自动序列化和反序列化。 ...
这个实例表明,WebRTC可以轻松地应用于Chrome浏览器,并且与HTML5和Java技术相结合,提供了简单而高效的方法来进行多媒体通信。 在HTML5的支持下,WebRTC使得网页能够直接访问用户的摄像头和麦克风,进行音视频通话...
《深入理解Ice.jar在Java中的应用》 Ice.jar,作为Java调用ICE(Internet Communication Engine)框架的关键组件,是开发分布式应用程序不可或缺的一部分。ICE是一种高性能、跨语言的中间件,它提供了一种简单而...
1. **初始化STUN客户端**:创建STUNClient实例,并设置服务器的公网IP和端口。 2. **创建绑定请求**:调用客户端的相应方法,如`createBindingRequest()`,创建一个STUN绑定请求。 3. **发送请求并监听响应**:使用`...
`icegridadmin`则是用于管理和监控ICE网格服务的工具,可以帮助开发者管理分布式系统的实例和负载均衡。 除了上述核心组件,安装包可能还包含文档、示例代码和其他资源,帮助开发者快速理解和使用ICE。文档通常会...