论坛首页 Java企业应用论坛

bboss序列化cglib代理对象方法介绍

浏览 5299 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-06-22   最后修改:2014-06-22
本文介绍bboss序列化cglib代理对象方法。经过cglib代理过的po类对象实例是原来po对象的子类对象,bboss在序列化这种对象时,需要经过特殊处理,否则会出现不可预知的错误,导致序列化失败,典型的例子就是hibernate查询操作返回的po对象就是cglib代理对象。

bboss序列化cglib代理对象方法非常简单,与序列化普通对象的方法一样,使用代码如下:
@Test
	public void testCGlibSerial() throws Exception
	{
		//远程调用
		SerialPO po = new SerialPO();
		po.setJob("架构工程师");
		po.setName("张三");
		CGLibProxy proxy = new CGLibProxy(po);
		SerialPO po2 = CGLibUtil.getBeanInstance(po.getClass(), po
				.getClass(), proxy);
		String xml = ObjectSerializable.toXML(po2);
		System.out.println(xml);
		po = ObjectSerializable.toBean(xml, SerialPO.class);
		System.out.println("name:"+po.getName());
		System.out.println("job:"+po.getJob());
	}
	
	public static class SerialPO
	{
		private String name;
		private String job;
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getJob() {
			return job;
		}
		public void setJob(String job) {
			this.job = job;
		}
	}
   发表时间:2014-06-25  
SerialPO  是普通Java类,还是需要对各个属性都要加注解?
0 请登录后投票
   发表时间:2014-06-25   最后修改:2014-06-25
上文展示了bboss如何把一个经过cglib修改后的java对象实例序列化成xml串,然后再把xml串还原(反序列化)成对象,和属性加注解没有太多关系

最近给一个基于hibernate开发的项目集成bboss会话共享功能,在序列化存储hibernate查询到的po对象到共享session库时碰到一个序列化问题,因为hibernate为了实现延迟加载机制,采用cglib修改了原来的po对象类,而之前的bboss序列化机制无法序列cglib修改后的po类;后来通过扩展bboss序列化机制解决了这个问题,发帖子记录一下。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics