1

我正在阅读有关 servlet 的生命周期的信息并对此表示怀疑。我们可以像调用任何其他 java 方法一样在被覆盖的 servlet 服务方法中调用 servlet 的 init 和 destroy 方法吗?这会影响容器的实际流量吗?

4

4 回答 4

4

你当然可以调用initand destroyfromservice方法。取决于这些方法的作用,即如果它们实际上破坏了 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 回答