ICE 学习笔记
来源:互联网 发布:网络 问号 编辑:程序博客网 时间:2024/04/30 12:06
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);
}
}
#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 学习笔记
- ICE 2.0学习笔记1(HelloWorld)
- 学习中间件ICE笔记(初学者必读)
- ICE(internet communication engine)学习笔记
- ICE学习笔记(01):Slice规范
- ICE学习笔记(01):Slice规范
- ICE中间件学习笔记 基础理论篇
- RFC学习笔记 -- 5245 ICE & 3261 SIP
- ICE学习
- ICE专题:学习ICE 3.0
- ICE笔记(07):Ice属性和配置
- Ice笔记--Ice信号处理机制
- Ice笔记---Ice属性与配置
- Ice笔记--Ice的服务器实现技术
- ICE笔记(07):Ice属性和配置
- ICE阅读笔记
- ICE中间件研究笔记
- ICE中间件笔记
- daemon 函数
- sdfa
- sdfa
- 进程间软中断通信(signal函数和kill函数)
- 走进Zend Framework框架编程(二):软件安装和环境配置
- ICE 学习笔记
- 人生成功生涯规划100
- 网页中图片的显示问题
- 杂谈 :女人过了三十,只好嫁给流氓
- xcv
- RFC2976 文档 SIP INFO Method 方法 中文版
- DHCP协议
- 笺言 :男人心理成熟的十条标准
- 使用JNI技术实现java程序调用第三方dll文件的功能