Zeroc Ice 学习笔记--IceBox
Zeroc Ice 学习笔记--IceBox
1、介绍
IceBox就好像是一个Tomcat,只需要服务实现Ice.Server接口并能轻松搞定
2、案例(参考Zeroc Ice 权威指南)
ice文件
编译Ice文件:
接口实现:
实现方法中连接数据库查询数据或者其他任意操作
服务封装(参考Zeroc Ice权威指南):
public abstract class AbstractIceBoxService implements Service{protected Ice.ObjectAdapter objectAdapter;protected Identity identity;protected static Logger LOG = LoggerFactory.getLogger(AbstractIceBoxService.class);protected static Sl4jLogerI icelogger = new Sl4jLogerI("communicator");@Overridepublic void start(String name, Communicator communicator, String[] args) {Ice.Util.setProcessLogger(icelogger);objectAdapter = communicator.createObjectAdapter(name);Ice.Object object = this.createMyIceServiceObj(args);identity = communicator.stringToIdentity(name);objectAdapter.add(PerfDispatchInterceptor.addIceObject(identity,object),identity);objectAdapter.activate();LOG.info(name+" service started ,with param size "+args.length+" detail: "+ Arrays.toString(args));}@Overridepublic void stop() {LOG.info(" stopping service "+identity + ".......................");objectAdapter.deactivate();PerfDispatchInterceptor.removeIceObject(identity);LOG.info(" stopped service "+ identity +" stoped");}//服务配置参数,来自icegrid.xml文件public abstract Ice.Object createMyIceServiceObj(String [] args);
}
public class PerfDispatchInterceptor extends DispatchInterceptor{private static Logger LOG = LoggerFactory.getLogger(PerfDispatchInterceptor.class);private static final Map<Identity, Object> id2ObjectMAP = new ConcurrentHashMap<Identity, Object>();private static final PerfDispatchInterceptor self = new PerfDispatchInterceptor();private static final long serialVersionUID = 1L;public static PerfDispatchInterceptor getINSTANCE(){return self;}//添加需要拦截的服务public static DispatchInterceptor addIceObject(Identity identity,Object object){id2ObjectMAP.put(identity,object);return self;}//此方法可以做任务拦截,雷士AOP@Overridepublic DispatchStatus dispatch(Request request){Identity theId = request.getCurrent().id;//request.getCurrent().con 打印出来local address = ip:point服务端信息 换行 remote address = ip:point 客户端信息String inf = " dispach req,method: "+request.getCurrent().operation+" service: "+theId.name +" server address: "+request.getCurrent().con;LOG.info(inf+" begin");try {DispatchStatus status = id2ObjectMAP.get(request.getCurrent().id).ice_dispatch(request);LOG.info(inf + " success");return status;}catch (RuntimeException e){LOG.error(inf+" error "+e.getMessage());throw e;}}public static void removeIceObject(Identity identity){LOG.info(" remove ice object "+identity);id2ObjectMAP.remove(identity);}
}
IceBox服务:
3、启动服务
icebox.propertices:修改相对于的IceBox.Service.xxxServices配置
4、Client调用同上一节
转载于:https://my.oschina.net/cxlt216/blog/748498
Zeroc Ice 学习笔记--IceBox相关推荐
- 【ICE学习】IceBox管理服务(C#)
[前提条件]: 已安装VS2012和ICE3.5.1,ICE安装包:https://download.csdn.net/download/xmzmqx/12928570 安装搭建环境比较简单,请自行百 ...
- ZeroC Ice权威指南-学习笔记2——IceBox
另外写一个稍微复杂一点的调用过程 按照书本上的slice[为了更清晰,这里把文件名字改为onlinebook.ice] 保存之后,ice插件就为我们自动创建了对应的java代码 给项目增加logbac ...
- ZeroC Ice权威指南-学习笔记1——hello world
前言 ZeroC Ice是一款很好的RPC框架,性能极好.但是参考文档不足是其一大问题,这也影响了它的传播.<ZeroC Ice权威指南>是唯一的中文教材,但写的不尽如人意,作为入门教材, ...
- ZeroC Ice IceBox使用
IceBox介绍 IceBox就像一个Tomcat,我们只要写N个Ice服务代码,用一个装配文件定义需要加载的服务列表.服务器的启动参数.启动次序等必要信息,然后启动IceBox,我们的应用系统就能够 ...
- ZeroC Ice 暂记
摘自: http://weibo.com/p/1001603869896789339575 原文地址: http://www.oschina.net/question/865233_242146 吴治 ...
- Zeroc Ice 发布订阅者之demo Icestorm之clock
刚刚在服务端(192.168.0.113)和客户端跑通(192.168.0.188),在这里记录,作为备忘. 第一步:读readme,先用vs2010生成subscriber.exe和publishe ...
- Python3 基础学习笔记 C03【操作列表】
CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...
- Cortex-M3学习笔记(一)
Cortex-M3学习笔记(一) 首先,在学习Cortex-M3时,我们必须要知道必要的缩略语.整理如下:AMBA:先进单片机总线架构 ADK:AMBA设计套件 AHB:先进高性能总线 AH ...
- UE4 Material 101学习笔记——08-12 凹凸和视差贴图/纹理压缩/布料/体积冰/摇曳树叶
UE4 Material 101学习笔记--08-12 凹凸和视差贴图/纹理压缩/布料/体积冰/摇曳树叶 Lec08 凹凸和视差贴图 Bump Offset and Parallax Occlusio ...
最新文章
- Chrome 科研神器!论文代码快速复现
- scikit-learn库中聚类算法自定义距离度量方式
- Qt编写OpenMP程序--循环测试
- python操作mongodb语法_python操作mongodb怎么找到所有的集合
- 10款你应该了解的开源安全工具
- pads中如何设置等长_标签打印软件中标签间距以及边距如何设置
- Android8.0使用ninja模块编译Settings
- 敢问多任务学习优化算法路在何方?|附代码
- 【渝粤教育】国家开放大学2018年秋季 1356T高级英语听说(2) 参考试题
- 为什么程序员赚不了大钱?
- 前端注释那些事儿:看懂这篇,提高代码质量So easy
- 电子公文流转暨无纸办公系统
- VBA 字典使用小结:关键字循环
- e路航LH900N导航仪凯立德最新版本地图更新方法
- 如何查看一个期刊是sci几区以及影响因子 入藏号 ISSN等信息
- 初探iOS项目使用MVP模式
- 路径中 斜杠/和反斜杠\ 的区别
- SAP中的采购质量管理与订单及收货控制
- arm指令集:精简指令集、复杂指令集
- 网银UKey登录数据签名和验签流程