【问题标题】:transient variable is null after org.apache.catalina.core.StandardContext reloadorg.apache.catalina.core.StandardContext 重新加载后的瞬态变量为空
【发布时间】:2013-12-30 20:56:22
【问题描述】:

我在一个类中有一个临时变量,因为它不是序列化的,只有当tomcat是org.apache.catalina.core.StandardContextreload这个相同的变量是空的,不知道为什么......

public class bean extends UnicastRemoteObject implements clientInterface{
 (...)
    private transient OAuthService service;
 (...)
}

当它出现在 Apache tomcat 日志中的netbeans 中时 org.apache.catalina.core.StandardContext reload 则此变量为空 ....

谁能告诉我为什么?

【问题讨论】:

    标签: java tomcat netbeans transient


    【解决方案1】:

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

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

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

    请参阅tomcat documentation Persistence across Restarts 部分了解序列化和重新加载之间的关系,以及此blog post 会话持久性 了解有关 tomcat 如何处理重新启动的一些详细信息.

    【讨论】:

    • 是的,我已经阅读了一些文档,只是我什至无法找到解决方案。尝试放入 context.xml: 只有这样,每次您中断会话时他才会重新加载。而且不会....
    • 也许最好贴出正在使用 OAuth 服务的类的代码,似乎它被附加到了奇怪的会话中
    • 我编辑了帖子,我用实例化的 bean 对象类型保存了会话。
    猜你喜欢
    • 1970-01-01
    • 2014-02-12
    • 2016-05-12
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多