4

我在这个话题上做了很多环顾四周,但我能找到的都是与数据库连接等相关的。

我正在构建一个 Web 服务,它加载一个 Shapefile 并使用 GeoTools 库来做一些基于位置的时髦的东西。我想做的是加载一次Shapefile,为Shapefile获取内存中的所有“功能”,然后每次都能检查该集合 - 请注意,现在实际上加载了许多shapefile。

我已经将基于地理的东西包装在一个类中,当类被实例化时,它将 shapefile 加载到一个集合中。我的@WebService 类检查 myGeoClass 是否已实例化,否则它会创建它并将文件加载到内存中。这些文件永远不会改变,所以我想在多个请求之间保留相同的对象实例,但我已经添加了一些跟踪,它似乎在每个请求中创建一个新实例。

有没有办法将单个实例保存在内存中,在所有请求中共享?

干杯!

4

1 回答 1

1

至少您可以使用静态变量。

如果是 Web 应用程序,则可以将其设置为 ServletContext 的属性。

如果您使用的是 Java EE 6,那么您可以将您的类定义为托管 bean @ApplicationScoped 或 Singleton

于 2012-09-14T21:03:08.863 回答