2012-05-30 35 views
0

我创建了一个webapp(用Eclipse编写,运行在Tomcat中),它是一个Servlet,它在初始化时创建了一个Runnable对象。 Runnable对象执行一些东西并将一些数据存储在内存中,而Servlet仅用于向用户呈现对象中的最新数据片段(没有数据库,我们只关心当前数据)。一个包含多个Servlet的核心应用程序

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

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

作为一种解决方法,我不是特别喜欢我刚刚使doGet()方法解析请求字符串并根据其内容发送不同的响应,但我宁愿使用单独的Servlet 。

回答

0

ServletContextListener.contextInitialized()方法中创建Runnable对象,并使用ServletContext.setAttribute()将其设置为ServletContext作为属性。

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

+0

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

相关问题