在org.apache.catalina.core.StandardContext重新加载后,transient变量为null

时间:2013-12-12 12:31:22

标签: java tomcat netbeans transient

我的类中有一个变量是瞬态的,因为它不是序列化的,只有当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中时,此变量为空....

有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:0)

如果变量属于以某种方式附加到HTTP会话的对象,则会发生这种情况。

重新加载后,会话内容被序列化,创建一个新的类加载器,然后对会话进行反序列化。

因此,如果变量被标记为瞬态,则不会被序列化,并且当重新加载完成时,它的内容将为空。

请参阅tomcat documentation Persistence in Restarts 部分,了解序列化和重新加载之间的关系,以及此blog post 会话持久性,了解有关tomcat如何处理重启。