容器中的Servlet实例

Aru*_*ung 2 java servlets

我知道只有一个servlet实例(一个servlet基础的实例)将在web容器中可用.是否可以在Web容器中创建实例池?像数据库连接?如果我创建一个servlet实例池,那我怎么能把它作为一个线程安全?(但我研究过,我们每个servlet只能生成一个servlet实例).

Bal*_*usC 6

我知道这是一个面试问题.我会回答如下:

您可以让servlet实现SingleThreadModel以获取容器以创建同一servlet类的多个实例的池.最大池大小取决于所使用的容器,例如,在Tomcat上,这是20个.但是,一个很大的但是,自Servlet 2.4以来,这个接口已被弃用!我们实际上应该以线程安全的方式编写servlet,而不将请求和/或会话范围的数据分配为servlet的实例变量.这样,跨多个线程使用单个servlet实例是安全的(读取:跨多个HTTP请求).

也可以看看: