session.setAttribute()之问题
程序员文章站
2022-03-03 08:32:41
...
HTTPSession在setAttribute时,保存的对象是否需要序列化?
查看StandardSession源码中,在setAttribute()中有如下代码
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。
上一篇: ConcurrentModificationException
下一篇: 阿里巴巴面试感想