Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java web应用程序中共享公共文本文件_Java_Performance - Fatal编程技术网

在java web应用程序中共享公共文本文件

在java web应用程序中共享公共文本文件,java,performance,Java,Performance,我目前正在开发一个Java web应用程序,它在服务器端进行大量计算。我正在尝试创建一个类似于谷歌地图的地图系统 客户端通过Javaservlet向服务器发送查询。对于每个实例,都会创建一个巨大的多维映射数组变量。我认为这可能在服务器计算机的速度和RAM使用方面效率低下 那么,是否所有实例都可以共享对内存中相同变量的访问,这样就不会一次又一次地创建相同的变量 map数组变量是一个巨大的文本文件,当前每个请求都会重新打开该文本文件 我正在考虑使用一个全局常量变量,但我也希望这个共享变量在运行时可以

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

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

那么,是否所有实例都可以共享对内存中相同变量的访问,这样就不会一次又一次地创建相同的变量

map数组变量是一个巨大的文本文件,当前每个请求都会重新打开该文本文件


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

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

1)创建一个单例EJB。用
javax.EJB.Startup
注释EJB,这样当服务器启动时,bean也会启动。在ejbinit方法中填充变量。任何web组件都可以访问该单例EJB。Singleton EJB确保无论发生什么情况,都只存在一个拷贝。除非出现错误,否则容器不会停止Singleton EJB


2)如果不能实现EJB,那么创建一个实现
ServletContextListener
的类。因此,当初始化
ServletContext
时,
ServletContextListener
类将收到一个回调,您可以在这里设置变量

静态变量?什么?谢谢你的帮助。我完全忘记了静态变量的唯一性。谢谢你的详细解释!ServletContextListener的init正是我想要的!我不熟悉单例EJB和注释,所以我将在其他时间尝试这些。但感谢您提供了多种解决方案!