每天都在用ICE,确又老是忘记,今天开始,把每次遇到的问题记录下来,免得每次碰到同样的问题去度娘、谷歌老半天。
先记录一段最简单的ICE进程间通讯实例(整理自ice开发指南),只针对java开发语言
实现目标:客户端进程像服务端进程发送一个hello world字符串,服务端收到之后在控制台打印出来
1.定义slice(Printer.ice),如下:
[["java:package:com.hydb.ice.intf"]]
module demo{
interface Printer{
void printString(string s);
};
};
注:上面的定义作为进程间通讯的接口描述文件,通过slice2java把定义转译成java接口文件,slice2java的使用方式大致如下:
$ mkdir generated
$ slice2java --output-dir generated Printer.ice
如果用eclipse编译器,安装一个插件就更简单了
2.服务端实现
public class PrinterServer {
public static void main(String[] args) {
int status = 0;
Ice.Communicator ic = null;
try{
ic = Ice.Util.initialize(args);
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("PrinterAdapter",
"default -p 1000");
Ice.Object object = new PrinterI();
adapter.add(object,ic.stringToIdentity("printer"));
adapter.activate();
ic.waitForShutdown();
}catch(Exception e){
e.printStackTrace();
status = 1;
}
if(ic != null){
ic.destroy();
}
System.exit(status);
}
}
3.客户端实现
public class PrintClient {
public static void main(String[] args) {
int status = 0;
Communicator ic = null;
try{
ic = Ice.Util.initialize(args);
ObjectPrx basePrx = ic.stringToProxy("printer:default -p 1000");
PrinterPrx printer = PrinterPrxHelper.checkedCast(basePrx);
if(printer == null)
throw new RuntimeException("Invalid proxy");
printer.printString("hello world");
}catch(Exception e){
status = 1;
e.printStackTrace();
}
if(ic != null){
try{
ic.destroy();
}catch(Exception e){}
}
System.exit(status);
}
}
4.验证
启动服务端,再启动客户端,就可以在服务端控制台输出 hello world
分享到:
相关推荐
javase基础学习笔记
接着,“月光软件站 - 编程文档 - Java - ICE 2_0学习笔记1(HelloWorld).htm”很可能是一个入门教程,引导读者通过一个简单的"Hello, World!"示例来熟悉Java ICE的使用。这个例子通常会展示如何创建ICE服务器,...
Pudn.com是一个分享技术文档和资源的平台,这个文件可能包含了ICE相关的学习资源、教程或者代码示例的链接,有助于扩展对ICE的深入学习。 在实际开发中,ICE的易用性和高性能使其在许多领域得到应用,例如物联网、...
总结来说,"ICE中间件资料大全"是一个全面了解和学习ICE的宝贵资源,无论是初学者还是经验丰富的开发者,都能从中获取到有价值的信息。通过深入学习和实践,开发者可以利用ICE构建出高效、稳定的分布式系统,提升...
### 云计算环境学习笔记知识点概览 #### 第一篇章:Distributed Systems与虚拟化技术 **1.1 分布式系统定义与特性...以上内容基于给定文件的部分内容进行了详细的解读和扩展,旨在提供一个全面的云计算学习笔记概览。
**IAR for AVR学习笔记** IAR for AVR是一款专业级的嵌入式开发工具,专为Atmel的AVR微控制器设计。这个学习笔记旨在帮助初学者掌握如何在IAR集成开发环境中(IDE)进行AVR微控制器的编程和调试。下面我们将详细...
这篇学习笔记主要涉及的是基于SN8P...整体来看,这个学习笔记涵盖了SN8P1919微控制器的初始化、主循环处理、中断处理、特殊功能寄存器的使用以及与外部设备的交互等多个重要方面,是一份比较全面的嵌入式系统开发参考。
在"WebRTC学习笔记01-最简单实现一对一视频通讯代码"中,我们将探讨WebRTC的基础知识以及如何通过简单的代码实现一对一视频通话。 首先,WebRTC的核心组件包括: 1. **RTCPeerConnection**:这是WebRTC中最关键的...
总之,“开始玩ICE”意味着开始学习和实践使用ICE框架进行分布式系统开发,这涉及到理解ICE的原理,学习其接口定义语言,编写服务端和客户端代码,并进行有效的测试和调试。通过这个过程中涉及的文件,我们可以逐步...
这篇“webrtc学习笔记一”主要关注的是视频流处理,是WebRTC技术中的核心部分。在深入讨论之前,先了解一下WebRTC的基本架构和组成部分。 1. **基础概念**: - **Peer Connection**: 是WebRTC的核心组件,负责...
本笔记将为初学者提供一个全面的AVR学习框架。 ### 前言 学习AVR单片机,首先需要了解单片机的基本概念,它是集成了中央处理器、内存、定时器/计数器、输入/输出接口等部件的集成电路,常用于实现特定的控制任务。...
树莓派学习笔记 树莓派是什么? 树莓派(Raspberry Pi)是一种信用卡大小的卡片式电脑,基于 Linux 系统,由英国的慈善组织“Raspberry Pi 基金会”开发,旨在为学生计算机编程教育提供支持。该基金会的宗旨是让...
**SDP学习笔记** SDP(Session Description Protocol)是一种用于描述多媒体会话的协议,它在互联网通信领域中起着至关重要的作用。本笔记将深入浅出地解析SDP的基本概念、结构以及应用,旨在提供比其他教程更为...
这篇学习笔记主要涵盖了SCMAD开发中的一些核心技术和资源需求,以下是对这些知识点的详细解释: 1. **资源最小需求**:在SCMAD开发中,对应用的UI、颜色、内存、文件大小等方面有明确的最低要求。例如,LCD屏幕至少...
1. 创建一个新的Tab对象。 2. 设置Tab的描述,这通常是辅助功能的目的,而不是直接显示在界面上。 3. 设置Tab监听器,当用户切换到该Tab时,会触发相应的事件处理。 4. 为Tab设置图标,增强视觉识别度。 5. 将新创建...
5、Hadoop生态圈的学习笔记,主要记录HDFS、MapReduce、Yarn相关读书笔记及源码分析等 5.1 HDFS Hadoop快速入门 HDFSOverView Hadoop广义生态系统 Hadoop高可用配置 HadoopCommon分析 HDFS集群相关管理 HDFS Shell ...
模式1是一种利用电缆和插头将电动汽车连接到交流电网的标准插座的方法,电流和电压的额定值不得超过16 A和250 V交流单相,或者16 A和480 V交流三相。 模式2是一种用于将EV连接到交流电网的标准插座的方法,该方法...
标题中的“ice_chen_linux_command”暗示了这是一个关于Linux命令的学习资源,可能是由用户“ice_chen”整理的个人笔记或者教程。描述中提到“用于查询Linux下常用命令操作”,意味着这个压缩包可能包含了一个详细的...
一个Service是App的一个组件,没有任何的UI,可以长时间的在后台无限期运行。可以在主线程之外的单独的线程中执行,也可以在应用程序组件(如活动)中进行管理。例如音乐播放器,可以让音乐在后台进行播放。 Service的...