使用MINA和XML marshal 传递JAVA 对象
APACHE MINA 是一个比较好的网络应用开发框架,比较适合用于java 网络通讯应用程序开发,默认支持的JAVA 对象传递是Serializer ,但Serializer 有些问题,加上如果使用XML传递网络监控比较简单,因此可以考虑利用JAVA 5/6支持的XML MASHAL将java对象先XML mashal,然后在对端unmashal。
以下是一些关键代码,先创建用于传递信息的类:
public class XMLObjectPackage {
static Logger logger = Logger.getLogger(XMLObjectPackage.class.getName());
/**
* 总长度,等于XML长度+PACKAGE NAME 长度+4
*/
int length;
String XML;
int ClassLength;
String ClassName;
public XMLObjectPackage(Object obj, Charset XmlCharset) throws JAXBException {
//String s;
XML = XmlMarshaller.marshal(obj,XmlCharset);
//length=;
ClassName=obj.getClass().getName();
ClassLength=ClassName.getBytes(XmlCharset).length;
length=XML.getBytes(XmlCharset).length+ClassLength+4;
logger.debug(length+":"+ClassLength+":"+ClassName+":"+XML);
//super();
// TODO Auto-generated constructor stub
}
public int getLength() {
return length;
}
public String getXML() {
return XML;
}
public int getClassLength() {
return ClassLength;
}
public String getClassName() {
return ClassName;
}
}
encode 关键代码:
@Override
public void encode(IoSession arg0, Object obj, ProtocolEncoderOutput arg2)
throws Exception {
XMLObjectPackage request = new XMLObjectPackage(obj,XmlCharset);
IoBuffer buffer = IoBuffer.allocate(request.getLength()+request.getClassLength()+8, false);
buffer.setAutoExpand(true);
buffer.putInt(request.g
相关文档:
1.计算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数 ......
1、FACTORY(工厂模式)
2、BUILDER(建造模式)
3、FACTORY METHOD(工厂方法模式)
4、PROTOTYPE(原始模型模式)
5、SINGLETON(单例模式)
6、ADAPTER(适配器模式)
7、BRIDGE(桥梁模式)
8、COMPOSITE(合成模式)
9、DECORATOR(装饰模式)
10、FACADE(门面模式)
11、FLYWEIGHT(享元模式) ......
1 JDK5.0包括的调试工具
我们在这里对JDK5.0的调试工具做大致的概念性的介绍,然后希望通过介绍我自己在实际工作中使用这些工具解决问题的实例来让大家对这些工具有更深入的了解。
JDK5.0里面加入了jstack, jconsole, jinfo, jmap, jdb, jstat, jps, 下面对这些工具做简单介绍:
jstack -- 如果java程 ......
1 网络通信的本质是进程间通信。
2 Tcp协议和UDP协议
TCP:开销大,用于可靠性要求高的场合。
TCP的过程相当于打电话的过程
UDP:用在对实时性要求比较高的场合。
UDP的过程相当于写信的过程。
注意:socket是套接字,ip和port(端口号 0~65535个端口,一个端口只能有一个进程)
3,   ......