1.org.I0Itec.zkclient.NetworkUtil,提供获取本机名称,端口是否被占用等功能,其中判断端口是否被占用的代码:
public static boolean isPortFree(int port) {
try {
Socket socket = new Socket("localhost", port);
socket.close();
return false;
} catch (ConnectException e) {
return true;
} catch (SocketException e) {
if (e.getMessage().equals("Connection reset by peer")) {
return true;
}
throw new RuntimeException(e);
} catch (UnknownHostException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
2.org.I0Itec.zkclient.serialize.SerializableSerializer,实现ZkSerializer,与TcclAwareObjectIputStream配合,提供java原生的序列化和反序列化的方法,其中TcclAwareObjectIputStream重写了基类ObjectInputStream的resolveClass和resolveProxyClass方法。基类的resolveClass使用的是class.forname,TcclAwareObjectIputStream使用的是
Thread.currentThread().getContextClassLoader();两者的区别可以看一下:http://waryist.iteye.com/blog/131983,http://impzx.com/thread-currentthread-getcontextclassloader%EF%BC%88%EF%BC%89%E8%A7%A3%E6%9E%90/
zkclient实现序列换的源码如下:
@Override
public Object deserialize(byte[] bytes) throws ZkMarshallingError {
try {
ObjectInputStream inputStream = new TcclAwareObjectIputStream(new ByteArrayInputStream(bytes));
Object object = inputStream.readObject();
return object;
} catch (ClassNotFoundException e) {
throw new ZkMarshallingError("Unable to find object class.", e);
} catch (IOException e) {
throw new ZkMarshallingError(e);
}
}
@Override
public byte[] serialize(Object serializable) throws ZkMarshallingError {
try {
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
ObjectOutputStream stream = new ObjectOutputStream(byteArrayOS);
stream.writeObject(serializable);
stream.close();
return byteArrayOS.toByteArray();
} catch (IOException e) {
throw new ZkMarshallingError(e);
}
}
分享到:
相关推荐
工具类项目,开发经常用到的一些可复用的工具类
项目搭建规范,可复用工具类,简易轮子
端口复用工具 reDuh 端口复用工具 reDuh 端口复用工具 reDuh
1、Utils工具类有String工具类、XmlNode节点工具类、BeanFactory相关、Common工具类、Cookie工具类、Date工具类、Http工具类、JDBC工具类、日志Log工具类、Servlet...2、工具类省了重复造轮子的工作,可以直接复用。
本书结合设计实例从面向对象的设计中精选23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。
设计模式可复用面向对象软件的基础 源代码 设计模式可复用面向对象软件的基础 源代码 gof
设计模式可复用面向对象软件的基础 23中设计模式 源码实现
用dom4j和Procy实现复用的动态代理
青鸟系统中可复用软件构件的表示与查询 常继传 李克勤 郭立峰 梅宏 杨芙清 (北京大学计算机科学技术系,北京 100871) 摘要 可复用构件的表示和检索是构件库和软件复用研究的重点,它伴随复用实践的深入和新技术...
提出了一种特征驱动的可复用需求建模方法( RRM, ReusableRequirement Method), 此方法定义了一个可复用的需求建模过程( RRMP, ReusableRequirementModeling Process), 在领域工程和应用工程两个层面上都提出了相对...
《设计模式:可复用面向对象软件的基础》是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年设计经验的结晶。四位顶尖的面向对象领域专家精心 选取了最具价值的设计实践,加以分类整理和命名,并用简洁而...
基于room技术封装了数据库工具类,包含DbManager类和DbHelper类,方便复用
设计模式:可复用面向对象软件的基础 中文高清版。此书是一本必看的设计模式书籍,书中实例采用c++实现。
本书结合设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别...
设计模式 - 可复用面向对象软件的基础(高清版PDF)设计模式可复用面向对象软件的基础高清版
海量可复用物料,通过 GUI 工具极速构建中后台应用
设计模式-可复用面向对象软件的基础 中文版 设计模式-可复用面向对象软件的基础 英文版 设计模式-可复用面向对象软件的基础 source code 设计模式(C++)源代码 一雨田
软件工程之 设计模式 教程:可复用面向对象软件的基础
本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...
设计模式_可复用面向对象软件的基础,经典之作,入门必看