瞬态关键字到底意味着什么?我有一个标记为瞬态的Class属性:
public class NodeClassifier {
private transient HashMap<String, Node> nodeCache = new HashMap<>();
...
}
Run Code Online (Sandbox Code Playgroud)
在将NodeClassifier对象存储并恢复到HttpSession之后,属性仍具有上一个Session的值.
它不应该是空的吗?
Environment是一个在Glassfish4上运行的普通Servlet.
transient 表示当对象以字节形式写出时,该值不会被序列化(使用默认的Java对象序列化).
会话的序列化可能会也可能不会发生(只需要在进程之间传递会话,或者将其持久化到磁盘,但通常不需要在单个JVM servlet容器中,只能将它们保存在内存中),所以你应该不依赖于那种"迷失"的价值观.
如果你不希望东西在会话中存活,不要把它放在那里.请考虑使用请求属性.
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |