存储由java servlet(Tomcat)检索的大数据的最佳位置

Tat*_*aya 4 java tomcat servlets jndi

我有java servlet从mysql数据库中检索数据.为了最小化到数据库的往返,它只在init()方法中检索一次,并被放置到HashMap <>(即缓存在内存中).

现在,这个HashMap是servlet类的成员.我不仅需要存储此数据,还需要在底层hashmap值类的缓存对象中更新一些值(实际上是计数器).并且有一个Timer(或Cron任务)来安排将这些计数器转储到DB.

因此,在谷歌搜索后,我找到了3个存储缓存数据的选项:

1)就像现在一样,作为servlet类的一个成员(但servlet可以被取消服务并由容器随意重新投入使用.然后数据将丢失)

2)在ServletContext中(我是对的,建议在这里存储少量数据吗?)

3)在JNDI资源中.

什么是最喜欢的方式?

Boz*_*zho 5

把它放进去ServletContext但是ConcurrentHashMap用来避免并发问题.