在Java Web应用程序中共享公共文本文件

时间:2013-05-02 03:47:18

标签: java performance

我目前正在开发一个Java Web应用程序,它在服务器端进行大量计算。我正在尝试创建一个类似于Google地图的地图系统。

客户端通过Java Servlets向服务器发送查询。对于每个实例,都会创建一个巨大的多维地图数组变量。我认为这在服务器计算机上的速度和RAM使用方面可能效率低下。

所有实例是否可以共享对内存中相同变量的访问权限,以便不会一次又一次地创建相同的变量?

map数组变量是一个巨大的文本文件,目前为每个请求重新打开文本文件。

我正在考虑使用全局常量变量,但我也希望此共享变量在运行时可以修改,这样就不必重新启动/重新编译服务器以更改数组数据。这可能吗?

2 个答案:

答案 0 :(得分:0)

使用静态变量来共享所有实例,但请确保您是否进行任何更新以同步这些更新。 要么 您可以将变量存储在所有客户端之间共享的servletcontext中

答案 1 :(得分:0)

1)创建 Singleton EJB 。使用javax.ejb.Startup注释EJB,以便在服务器启动时,bean也会启动。在EJB init 方法中填充变量。任何Web组件都可以访问该单例EJB。 Singleton EJB确保无论如何只存在1个副本。除非出现错误,否则容器不会停止Singleton EJB。

2)如果您无法实现EJB,则创建一个实现ServletContextListener的类。因此,当ServletContext 已启动时,ServletContextListener类将收到回调,您可以在其中设置变量。