我的类中有一个变量是瞬态的,因为它不是序列化的,只有当tomcat org.apache.catalina.core.StandardContext
重新加载时,这个变量才为null,不知道为什么......
public class bean extends UnicastRemoteObject implements clientInterface{
(...)
private transient OAuthService service;
(...)
}
当它出现在 Apache tomcat log netbeans
重新加载的org.apache.catalina.core.StandardContext
中时,此变量为空....
有人可以告诉我为什么吗?
答案 0 :(得分:0)
如果变量属于以某种方式附加到HTTP会话的对象,则会发生这种情况。
重新加载后,会话内容被序列化,创建一个新的类加载器,然后对会话进行反序列化。
因此,如果变量被标记为瞬态,则不会被序列化,并且当重新加载完成时,它的内容将为空。
请参阅tomcat documentation Persistence in Restarts 部分,了解序列化和重新加载之间的关系,以及此blog post 会话持久性,了解有关tomcat如何处理重启。