我正在阅读有关 servlet 的生命周期的信息并对此表示怀疑。我们可以像调用任何其他 java 方法一样在被覆盖的 servlet 服务方法中调用 servlet 的 init 和 destroy 方法吗?这会影响容器的实际流量吗?
问问题
2851 次
4 回答
4
你当然可以调用init
and destroy
fromservice
方法。取决于这些方法的作用,即如果它们实际上破坏了 servlet,这可能是不明智的。
比如说,我有一个请求进来并遇到问题。我认为解决这个问题的最简单方法是调用destroy
然后init
“重新启动”servlet。
我的重启花费了非零时间,在此期间另一个请求进来了。此请求遇到问题。它还决定重新启动 servlet。
你看这是怎么回事...
我建议不要摆弄 servlet 生命周期方法并将其留给容器。如果你必须调用这些方法,那么要非常小心线程同步。
至于影响“容器的实际流程” - 容器无法知道您调用了该方法,这就是请求不断涌入的原因。容器将无视您调用这些方法。
于 2013-03-14T11:10:45.293 回答
1
是的,你可以打电话给他们,但没有必要这样做。此方法由 Servlet 容器使用。
如果您需要例如初始化内部状态,则应该使用此方法。
于 2013-03-14T11:11:33.380 回答
1
方法init()
和destroy()
默认值是空的,您应该覆盖它们以获取/释放资源(例如)。
您可以调用它们,它不会影响 servlet 生命周期。
于 2013-03-14T11:13:15.000 回答
1
你可以调用这些方法没有问题。但是它们是生命周期方法。无论容器执行的操作是servlet类的实例化和销毁,都不会在那个时候发生。
每当被容器调用时,只会发生那些操作(对象实例化和销毁)
于 2013-03-14T11:23:15.137 回答