HTTPSession在setAttribute时,保存的对象是否需要序列化?
查看StandardSession源码中,在setAttribute()中有如下代码
代码语言:javascript复制 if ((manager != null) && manager.getDistributable() &&
!isAttributeDistributable(name, value))
throw new IllegalArgumentException
(sm.getString("standardSession.setAttribute.iae", name));
protected boolean isAttributeDistributable(String name, Object value) {
return value instanceof Serializable;
}
manager接口:
/**
* Return the distributable flag for the sessions supported by
* this Manager.
*/
public boolean getDistributable();
/**
* Set the distributable flag for the sessions supported by this
* Manager. If this flag is set, all user data objects added to
* sessions associated with this manager must implement Serializable.
*
* @param distributable The new distributable flag
*/
public void setDistributable(boolean distributable);
在web.xml配置<distributable/>后, manager中的distributable变量为true,在setAttribute时会检查对象是否序列化。
因此,session中的对象需不需要实现序列化,取决于是否支持分布式session。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184136.html原文链接:https://javaforall.cn