Tomcat 具有多个servlet的一个核心应用程序

Tomcat 具有多个servlet的一个核心应用程序,tomcat,web-applications,Tomcat,Web Applications,我创建了一个webapp(用Eclipse编写,在Tomcat中运行),它是一个Servlet,在初始化时创建了一个可运行的对象。Runnable对象执行大量工作并在内存中存储一些数据,servlet的存在只是为了向用户呈现对象中最新的数据片段(没有DB,我们只关心当前数据) 问题是,我现在想让另一个Servlet访问相同的数据,并以不同的方式将其呈现给用户,这意味着Servlet创建可运行对象的模型不再可行 所以,我的问题是:我如何创建一个应用程序,它有一个主类来完成所有的工作,还有一堆ser

我创建了一个webapp(用Eclipse编写,在Tomcat中运行),它是一个Servlet,在初始化时创建了一个可运行的对象。Runnable对象执行大量工作并在内存中存储一些数据,servlet的存在只是为了向用户呈现对象中最新的数据片段(没有DB,我们只关心当前数据)

问题是,我现在想让另一个Servlet访问相同的数据,并以不同的方式将其呈现给用户,这意味着Servlet创建可运行对象的模型不再可行

所以,我的问题是:我如何创建一个应用程序,它有一个主类来完成所有的工作,还有一堆servlet与之通信以获取数据


作为一项我并不特别喜欢的工作,我刚刚让doGet()方法解析请求字符串并根据其内容发送不同的响应,但我更愿意使用单独的servlet来完成这项工作。

ServletContextListener.contextInitialized()期间创建可运行对象
方法,并使用
ServletContext.setAttribute()
将其作为属性设置为
ServletContext


而且,这两个servlet都可以从
ServletContext.getAttribute()
获取Runabble对象,并显示数据。

不要忘记,放置在ServletContext(也称为“应用程序范围”)中的对象必须是线程安全的,或者必须以线程安全的方式访问(例如,在对象本身上使用同步块)。一直以来都应该是这样(因为servlet本身有一些状态),但值得一提。