Hello.ice
#ifndef SIMPLE_ICE
#define SIMPLE_ICE
//名字空间 or 包名
module demo.slice.Hello
{
interface Hello{
void printString(string s);
};
};
#endif
服务器:
HelloI.java
package demo.ice.Hello.server;
import demo.slice.Hello._HelloDisp;
import Ice.Current;
/**
* @author MudfishCN
*
* servant class: HelloI
* _HelloDisp 基类由slice2java编译器生成,它是一个抽象类。
* _HelloDisp 抽象类包含一个printString()方法。
*/
public class HelloI extends _HelloDisp {
/* (non-Javadoc)
* @see demo._HelloOperations#printString(java.lang.String, Ice.Current)
*/
public void printString(String s, Current __current) {
// TODO Auto-generated method stub
System.out.println(s);
}
}
HelloServer.java
package demo.ice.Hello.server;
import Ice.LocalException;
/**
* @author MudfishCN
* version: 1.0.1
*/
public class HelloServer {
public static void main(String[] args) {
// 定义status变量,用来控制服务器.
int status = 0;
Ice.Communicator ic = null; //声明一个Communicator 对象ic
try {
// 初始化Ice运行时
ic = Ice.Util.initialize(args);
/*
* 创建一个对象适配器(ObjectAdapter)对象IOAdapter,并初始化之。
* 参数"HelloWorldAdapter":表示适配器的名字。
* 参数"default -p 10000":表示适配器使用缺省协议(TCP/IP)在端口10000处监听到来的请求。
* 服务器配置完成.
*/
Ice.ObjectAdapter IOAdapter = ic.createObjectAdapterWithEndpoints(
"HelloWorldAdapter", "default -p 10000");
/*
* 为Hello接口创建一个servant.
*/
Ice.Object IObject = (Ice.Object) new HelloI();
/*
* 将新的servant添加到适配器,
* 并将这个新的servant命名为"HelloWorld"
*/
IOAdapter.add(IObject, Ice.Util.stringToIdentity("HelloWorld"));
/*
* 激活适配器,以使服务器开始处理来自客户的请求
*/
IOAdapter.activate();
/*
* 挂起发出调用的线程,直到服务器实现终止为止.
* 或者是通过发出一个调用关闭运行时(run time)的指令来使服务器终止.
*/
ic.waitForShutdown();
} catch (LocalException e) {
// 捕捉ICE运行时可能抛出的所有异常
e.printStackTrace();
status = 1;
} catch (Exception e) {
// 捕捉串常量
e.printStackTrace();
status = 1;
} finally {
if (ic != null) {
ic.destroy();
}
}
System.exit(status);
}
}
HelloClient.java
package demo.ice.Hello.client;
import Ice.ObjectPrx;
import Ice.Util;
import demo.slice.Hello.HelloPrx;
import demo.slice.Hello.HelloPrxHelper;
/**
* @author MudfishCN
*/
public class HelloClient {
public static void main(String[] args) {
int status = 0;
String s;
//创建一个通信器的对象ic
Ice.Communicator ic = null;
try {
// 初始化ICE运行时
ic = Util.initialize(args);
/*
* 获取远程对象的代理
* 创建一个代理对象,并用通信器的stringToProxy()方法初始化之。
* 参数:"HelloWorld:default -p 10000"
* 表示:
*/
ObjectPrx base = ic.stringToProxy("HelloWorld:default -p 10000");
/*
* 关键点
*/
HelloPrx hello = HelloPrxHelper.checkedCast(base);
//测试向下转换是否成功。如果不成功抛出异常信息"Invalid proxy".
if (hello == null) {
throw new Error("Invalid proxy");
}
//向服务器发送十条消息
for(int i=1;i<=10;i++){
s = "Hello,world!"+Integer.toString(i);
hello.printString(s);
}
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
e.printStackTrace();
status = 1;
} finally {
if (ic != null) {
//销毁通信连接
ic.destroy();
}
}
System.exit(status);
}
}
分享到:
相关推荐
《ICE HelloWorld程序详解》 ICE(Internet Communications Engine)是由ZeroC公司开发的一种分布式对象中间件,它提供了一种高效、灵活、易于使用的跨平台通信框架,适用于构建大规模的分布式应用程序。"ICE Hello...
### HelloWorld_ICE分布式应用开发入门 #### 概述 本文旨在通过一个简单的示例来介绍如何使用ICE(Internet Communications Engine)进行分布式应用开发。ICE是一种强大的中间件框架,用于构建可扩展、健壮且高...
随后,文档通过一个简单的HelloWorld应用示例,展示了如何编写Slice定义,并通过C++和Java编写ICE应用程序。 _slice语言_是ICE的核心部分,文档详细介绍了Slice语言的编译过程、源文件结构、词法规则等。Slice语言...
JAVA版本的HelloWorld程序与C++类似,先定义`HelloWorld.ice`接口。 5.2 **生成框架代码** 使用slice2java工具,将Slice定义转换为Java的接口和类。 5.3 **实现服务端** 在Java中,实现`HelloWorld::Hello`接口,...
【描述】"这是用java开发的ice的helloworld" 暗示了这个压缩包的核心内容是一个Java项目,该项目展示了如何使用Ice库来实现一个基础的“Hello, World!”服务。在Java中,"Hello, World!"程序通常涉及创建一个类,该...
Ice 是一种面向对象的中间件平台。从根本上说,这意味着Ice 为构建面 向对象的客户-服务器应用提供了工具、API 和库支持。Ice 应用适合在异 种环境中使用:客户和服务器可以... 本例子是用java写的ice实现的HelloWorld
public abstract class _HelloWorldDisp extends Ice.ObjectImpl implements HelloWorld{} servant类是ice所定义的接口,在服务器端的实现类。我们在该类中可以编写服务器端对请求的具体处理。 代码如下: package ...
这里我们将深入探讨"01-android 4.0 入门配置以及HelloWorld程序讲解"的相关知识点,带你走进Android开发的世界。 首先,让我们从Android 4.0(也称为Ice Cream Sandwich,简称ICS)开始。这是Android操作系统的一...
《HelloWorld_ICE分布式应用开发入门_MichiHenning.pdf》这篇文章很可能是介绍ICE的基础知识,包括如何安装ICE,以及通过一个简单的"Hello, World!"程序来演示ICE的基本用法。开发者Michi Henning可能会讲解ICE的...
- 创建一个继承自`IHelloWorldDisp_`的类`HelloWorld`,实现具体的业务逻辑: ```csharp public class HelloWorld : IHelloWorldDisp_ { // 实现具体的接口方法 } ``` 以上就是基于ICE 3.4.2版本在C#平台上...
这一章节通过创建一个简单的HelloWorld应用来介绍Ice的基本使用方法。具体包括: - **1.2.1 编写 Slice 定义**:指导用户如何编写Slice文件来定义应用的服务接口。 - **1.2.2 使用 C++ (C++11) 编写 Ice 应用**:...
Hello World应用首先需要定义一个简单的Slice文件,描述服务端提供的接口。 - **C++开发**: - 使用Ice的C++ API来创建客户端和服务端程序。 - 客户端调用服务端提供的方法完成通信。 - **Java开发**: - 同样...
然后,通过"Hello World"应用的实现,展示了Ice在C++和Java中的基本使用方法。接下来,深入讨论了Slice语言,这是Ice中的接口定义语言,类似于CORBA的IDL。Slice语言用于定义数据类型、接口、操作和异常,并具有自己...
接着,“月光软件站 - 编程文档 - Java - ICE 2_0学习笔记1(HelloWorld).htm”很可能是一个入门教程,引导读者通过一个简单的"Hello, World!"示例来熟悉Java ICE的使用。这个例子通常会展示如何创建ICE服务器,...
Hello World 示例 ##### 5.1 编写 Slice 定义 Ice 使用 Slice(一种类似于 IDL 的语言)来定义服务接口。下面是一个简单的 Slice 定义示例: ```slice module Demo { interface Greeter { string greet(string...
- **示例**:书中通过一个简单的 HelloWorld 应用来介绍如何使用 Ice 开发分布式程序。 - **步骤**: - **编写 Slice 文件**:定义服务接口。 - **生成代码**:使用 Slice 编译器生成所需的 C++ 或 Java 代码。 -...