Java Servlet池
servlet 101,在Tomcat 6下:
有人能给我一个很好的解释,比如在servlet启动时创建一个昂贵的Foo对象集合,并将它们存放在我可以在处理每个请求时访问它们的地方吗
就我所知,至少有三种方法可以做到这一点,我对两者的区别有点模糊。我不关心集群或算法,以驱逐过时的条目或类似的东西,只是基本的
干杯,谢谢
你可以在下面搜索框中键入要查询的问题!
servlet 101,在Tomcat 6下:
有人能给我一个很好的解释,比如在servlet启动时创建一个昂贵的Foo对象集合,并将它们存放在我可以在处理每个请求时访问它们的地方吗
就我所知,至少有三种方法可以做到这一点,我对两者的区别有点模糊。我不关心集群或算法,以驱逐过时的条目或类似的东西,只是基本的
干杯,谢谢
# 1 楼答案
实现一个^{} ,在
contextInitialized()
期间执行所需的加载任务,并通过ServletContext#setAttribute()
将结果存储在应用程序范围中。它将在服务器启动期间调用,并且应用程序范围也可以在常规servlet中访问基本示例:
以
web.xml
通常的方式映射它:以下是如何在常规servlet中访问它:
下面是如何在JSP中访问它:
也就是说,我真的不明白这与“servlet池”有什么关系。这个术语毫无意义
希望这有帮助
# 2 楼答案
您可以使用servlet context
servlet上下文对于所有servlet实例都是通用的,其生命周期超出了请求和会话
你可以在那里放任何东西,比如:
这里有一个链接,您可以在其中阅读更多about it
# 3 楼答案
您有几个选择:
# 4 楼答案
您正在查找对象池。通常,对象池是使用可用对象列表构建的,当资源被释放而未达到最大可用对象数量时,会添加到列表中
我不会预先填充池,只要在空闲对象池为空时分配一个新对象即可
一个显著的性能优势是为最后释放的对象保留1个引用。不必将其添加到自由对象列表中,在交替分配和释放1个对象的情况下,可以节省大量资源。如果引用不是
null
将下一个释放的对象添加到列表中,则在分配时返回最后一个释放的对象并null
它