0

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

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

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

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

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

4

2 回答 2

0

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

于 2013-05-02T04:06:25.333 回答
0

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

2)如果你不能实现 EJB,那么创建一个实现ServletContextListener. 因此,当initilizedServletContext时,类将收到一个回调,您可以在其中设置变量。ServletContextListener

于 2013-05-02T04:07:50.107 回答