【发布时间】:2011-11-25 10:25:20
【问题描述】:
在我的 servlet 中,我启动了一个后台线程 onContextInitialized(),因此我需要停止它 onContextDestroyed()。所以我的 servlet 需要一个指向这个守护线程的私有实例变量(我们称之为daemon)。
守护进程运行良好,但是当我退出 contextInitialized() 时引用就丢失了!例如,如果我实现doGet() 来显示线程的状态,它会抛出一个NPE
所以答案是,谁能访问我的 servlet 私有实例变量并将其设置为 null? 我注意到线程运行得很好,只是引用被破坏了
【问题讨论】:
-
可以把onContextInitialized的代码贴上来吗?这听起来很奇怪。是不是因为你在 onContextInitialized 中声明了一个类似的命名局部变量,所以实例变量被隐藏了?
-
不,在我看来,servlet 对象在 contextInitialized() 执行后被销毁。很难理解为什么..
标签: java jakarta-ee tomcat servlets servlet-listeners