从servlet读取属性文件数据

时间:2016-05-24 07:22:45

标签: multithreading servlets java-ee web file-io

我正在开发一个Web应用程序,我正在从Servlet中读取存储在xml文件中的一些配置数据。我希望从这个servlet读取的数据可用于来自这个servlet的所有请求。因此,在这个servlet的init()方法中,我正在初始化全局变量,该变量将从此xml文件中读取内容,以便进入此servlet的所有请求都将具有此数据,并且不必从xml文件一次又一次。

我的第一个问题是,这种方法是在仅来自此servlet的请求之间共享数据的更好方法。我不想在所有servlet中共享它。

1 个答案:

答案 0 :(得分:1)

此处的规则只是局部性:如果该数据仅由一个servlet使用,则它应该是servlet的本地,这意味着根据您的建议:

  • servlet类的成员
  • 加载在servlet的init方法

但是(正如您的初始帖子所述),如果该数据可以由同一个Web应用程序的另一个servlet 更新,那么将它向上移动一步到SerletContext属性是有意义的。那样:

  • 它仍然可以最初加载到servlet的init方法
  • 可以随时更改知道该属性名称的Web应用程序的任何其他组件。

您可以想象许多其他方法,例如使用自定义事件和使用可观察模式,或者将servlet映射到一个特殊(和私有)URL,该URL表示必须重新加载xml文件,但恕我直言, servlet上下文属性是一种简洁的方法,允许不同的servlet交换信息。

要小心,如果您的网络应用程序要由多台服务器提供服务,您仍需要额外的同步机制