一个分享个人学习、开发经验的Blog,http://www.joyphper.net

java写入session时报setAttribute: Non-serializable attribute解决方法

posted @ 2011-11-30 23:38 | 阅读:26546 | 评论:3 | 分类: Java

java分布式部署的时候执行request.getSession().setAttribute("VO",VO);时报setAttribute: Non-serializable attribute异常,这的问题有如下几种解决方法

1、在你的项目不要经过分布试部署的时候比较简单:去掉web.xml中的 <distributable/> 就行了。

2、在你的项目要通过分部试部署的时候,首先是要将你写入的VO对象进行序列化,再进行入request.getSession().setAttribute("VO",VO)操作。其方法是:

在你的VO类是实现一下序列化接口即 implements java.io.Serializable。

举个例子:

序列化之前代码如下:

 

public class PhoneNumberVo   
{  
    private String addressCode;  
    public String getAddressCode()   
    {  
        return addressCode;   
    } 
    public void setAddressCode(String addressCode)   
    {  
        this.addressCode = addressCode;  
    }    
}  

 

序列化之后的代码如下:

 

public class PhoneNumberVo implements Serializable  
{  
    private static final long serialVersionUID = 1L;  
 
    private String addressCode;  
 
    public String getAddressCode()   
    {  
        return addressCode;   
      
    }      
    public void setAddressCode(String addressCode)   
    {  
        this.addressCode = addressCode;  
    }    
}  

 

这样在不管是在分布试部署还是在非分布试部署都不会有问题了。不过序列化之后会让服务器的负载加重,没有必要的话不建议序列化。

TAG: java , Non-serializable

共有3条评论 发表评论>>

生猪价格 发表于:2011-12-03 16:30
不是很懂
heyMrGu 发表于:2012-05-24 13:55
很不错,刚刚解决了我的问题,十分感谢呀
程序猿 发表于:2013-08-27 10:57
我的VO已经流化了,可是还是一样的报错
点击换一张验证码