在服务方法中调用servlet init和destroy方法

时间:2013-03-14 11:04:12

标签: java servlets

我正在阅读有关servlet生命周期的内容,并对此表示怀疑。我们可以在重写的servlet的服务方法中调用servlet的init和destroy方法,比如调用任何其他java方法吗?这会影响容器的实际流量吗?

4 个答案:

答案 0 :(得分:4)

您当然可以init方法调用destroyservice。根据这些方法的作用,即如果它们实际上销毁 servlet,这可能是不明智的。

比如说,我有一个请求进来并遇到问题。我认为解决此问题的最简单方法是调用destroy然后init来“重启”servlet。

我的重启时间非零,另一个请求在此期间进入。此请求遇到问题。它还决定重新启动servlet。

你知道这是怎么回事......

我建议不要使用servlet生命周期方法,并将其留给容器。如果必须调用这些方法,那么就要非常警惕线程同步。

就影响“容器的实际流量”而言 - 容器无法知道你调用了方法,这就是请求不断涌入的原因。容器将无视你调用这些方法。

答案 1 :(得分:1)

是的,你可以打电话给他们,但没有必要这样做。这个方法由Servlet容器使用。

如果需要初始化内部状态,则应使用此方法。

答案 2 :(得分:1)

方法init()destroy()默认为空,您应该覆盖它们以获取/释放资源(例如)。

您可以调用它们,它不会影响servlet生命周期。

答案 3 :(得分:1)

你可以调用那些方法没问题。但它们是生命周期方法。无论容器执行的操作是什么,servlet类实例化和销毁都不会在那时发生。

每当容器调用时,只会发生那些操作(对象实例化和销毁)