诚心求问b/s架构java应用的数据缓存适合放在那里?ApplicationContext还是使用单例?

SINCE1978 2007-07-05 04:00:35
最流行的b/s架构java应用,一部分数据希望缓存起来,适合放在那里?应用服务器的ApplicationContext还是在代码中使用静态对象?

前者肯定没问题;后者也比较常用:在代码中使用单例类、这个类持有静态成员(集合)、在这个静态成员中缓存数据。

使用ApplicationContext的话数据应该是缓存在应用服务器的进程空间中,被所有访问线程所共享并且应该是线程安全的。
使用静态对象的话数据应该是缓存在了jvm虚拟机的某处空间中吧?我猜的...

孰优孰劣?高手赐言!
...全文
633 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SINCE1978 2007-12-06
  • 打赏
  • 举报
回复
还有一个地方可以放局部共享数据
就是定义servlet的属性成员,因为应用服务器都有servlet实例池,servlet实例是不断被重用的,所以定义在一个servlet里的属性只要初始化后就一直存在。
现在有三个地方了:
static资源(应该是c/s、b/s均可的全局共享)

application(b/s应用下的jsp、servlet全局共享)

servlet成员(本servlet多线程共享、可以叫做功能模块内共享吧、类似在struts的action内定义属性)

其他的session、request、page就不说了,生命周期太短,适用场景显而易见。
heipn 2007-11-29
  • 打赏
  • 举报
回复
都一样,都是静态对象。放那都一样,ApplicationContext这个东西存的数据底层应该是个静态的map,你自己声明一个还是用容器的一个有什么差别?

-------------------------------------------------------
"如果只有1个应用,那么用单态和用ApplicationContext差别不大。
如果有多个应用,最好用ApplicationContext。"


这是从何说起的?
SINCE1978 2007-11-29
  • 打赏
  • 举报
回复

"如果只有1个应用,那么用单态和用ApplicationContext差别不大。
如果有多个应用,最好用ApplicationContext。"

他的意思是不是说多个应用公用ApplicationContext?而一个应用内的静态资源别的应用是无法访问的,这种场景几乎没有吧。
SINCE1978 2007-11-08
  • 打赏
  • 举报
回复
"如果只有1个应用,那么用单态和用ApplicationContext差别不大。
如果有多个应用,最好用ApplicationContext。"

为何?
billchang010 2007-08-07
  • 打赏
  • 举报
回复
up
yeshucheng 2007-07-22
  • 打赏
  • 举报
回复
这个问题比较庞大,建议你去看看关于缓存的资料
sacrefies 2007-07-22
  • 打赏
  • 举报
回复
要分析你究竟有那些对象是需要缓存的,他们在应用的使用究竟生命周期如何。不是都可以扔到 application 里面的。
KingNE 2007-07-12
  • 打赏
  • 举报
回复
UP
消耗管理
优化程序
graygu 2007-07-11
  • 打赏
  • 举报
回复
这个问题意义不大, application server比如jboss, weblogic会帮你管理内存的.
寸在哪里, 都要占用server内存的.
timerri 2007-07-11
  • 打赏
  • 举报
回复
取决于你的容器是否只有1个应用(站台).

如果只有1个应用,那么用单态和用ApplicationContext差别不大。
如果有多个应用,最好用ApplicationContext。

GODProbe 2007-07-11
  • 打赏
  • 举报
回复
java高手都去哪了?
都去学.net去了吧!

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧