首页 > 代码库 > ICE入门学习和实践

ICE入门学习和实践

ICE源码安装

(一)Ice依赖软件包

(1)gcc 3.3以上。

(2)Berkeley DB 4.8以上

(3)expat 2.0.1

(4)bzip2 1.0.x

(5)mcpp 2.7.2

 

(二)安装依赖包

(1)安装编译所需软件包 用 apt-get install bulid-essential

(2)安装ice所需依赖包 apt-get install libdb4.6++-dev libbz2-dev bzip2 libssl-dev libreadline5-dev libexpat1-dev mcppI

(3)添加链接 ln -s /usr/lib/libmcpp.so.0.2.0 /usr/lib/libmcpp.so 如果不这样处理,会出现如下错误 cannot find -lmcpp

 

(三)进去Ice 下面的cpp目录,运行 make  然后 make install ,编译完成。

(四)添加环境变量

  Ice默认安装在/opt/下面,如/opt/Ice3.4.1/

  在 ~/.bashrc里面添加环境变量和类库为题

  export ICE_HOME=/opt/Ice-3.4.1

  export PATH=$ICE_HOME/bin:$PATH

  export LD_LIBRARY_PATH=$ICE_HOME/lib:$LD_LIBRARY_PATH

 就会新添如下命令

 slice2cpp      slice2freeze   slice2html     slice2php      slice2rb

 slice2cs       slice2freezej  slice2java     slice2py

=以上摘自网络,基本是这个步骤,实际安装因为环境不同可能会遇到一些问题,具体问题具体解决=

 

实践

基本实践步骤

1.编写ice文件,在其中命名相关接口
2.slice2java编译ice文件,自动生成ice相关的java源码
3.开发业务类,继承_XXXDisp类,实现服务端业务代码
4.开发服务端通讯代码,服务端通讯代码没有业务逻辑,但是可以实例化服务端业务类放到对象适配器(ObjectAdapter)中进而提供业务服务。
5.编写服务端配置文件,配置适配器对应的网络端口等等其他信息
6.编写客户端配置文件,主要是配置一个代理参数,指向服务端提供的网络服务,包括网络协议、地址、端口等
5.开发客户端代码,读取代理参数从而能和服务端进行通讯

Icegrid部署

1.准备两台机器,A和B,分别安装ice3.4.1

2.在A中
   a.执行Ice-3.4.1/java/demo/IceGrid/simple的例子,配置config.register文件,使Ice.Default.Locator指向本地端口
   b.执行icegridregistry --Ice.Config=config.register,节点要运行,该服务必须启动
   c.执行icegridadmin --Ice.Config=config.grid -e \ "application add application_with_replication.xml",将application_with_replication.xml生成为应用
   d.生成config.node1文件,执行icegridnode --Ice.Config=config.node1 启动服务


3.在B中
   a.生成config.node2文件,Ice.Default.Locator需要连到A(否则无法启动服务)
   b.执行icegridnode --Ice.Config=config.node2 启动服务
   c.node2需要调用的class已经在application_with_replication.xml中定义


4.在A上启动客户端,Ice.Default.Locator指向A即可

简单的客户端服务器程序涉及的文件

1.xx.ice文件,定义接口,并执行slice2java xx.ice自动生成相应的java文件,编译这些java文件
2.开发java程序,继承_XXDisp,该程序是具体执行业务的
3.开发java的服务端程序,继承Ice.Application,该程序不涉及具体业务
4.开发java的客户端程序,继承Ice.Application,该程序通过服务调用_XXDisp中的方法
5.需要调整application_with_replication.xml,将其应用注册到icegrid中