今天在开发过程中遇到一个问题,开发的程序在5.0下正常,移到5.5后出现了java.lang.IllegalArgumentException: setAttribute: Non-serializable attribute异常,根据一些资料和跟进源代码,发现原因是从Tomcat 5.5.15开始,放入到session中的对象必须实现
java.io.Serializable接口,解决这个问题的方法从根本上来说当然是把需要放到session中的类实现java.io.Serializable接口,但如果不能修改程序,又需要处理这个问题,可去掉%Tomcat%\conf\context.xml下列的注释:
<!--
<Manager pathname="" />
-->
有些程序可能在上述方法修改后,还不能完全解决,需要查看项目里web.xml是否有
<distributable/>
,如果没有使用分布部署,同样需要删除。