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中