【发布时间】:2016-09-19 19:50:22
【问题描述】:
我需要一些关于以下多线程场景的建议。我有一个 xml 文件,其中包含一些 Web 应用程序的配置数据。当用户访问网站时,根据用户访问的 url,将读取 XML 文件中的数据以找出附加到该用户请求的一些属性。为了提高读取 xml 文件的性能,我使用了 Ehcache。我正在缓存缓存中来自 xml 的请求和相关配置。
所以,现在我面临的问题是。如果有人开始更新 xml 文件,我需要停止从缓存中读取,直到写入完成,一旦 xml 文件更新操作完成,我想清除缓存。然后缓存将再次重建。对于第二部分,我正在努力研究如何实现多线程来实现这一目标。文件更新可以通过两种方式完成,一种是用户使用 notepad++ 或其他工具直接编辑 xml 文件。另一种方法是使用相同的 Web 应用程序。
【问题讨论】:
-
这个 XML 文件多久更新一次?
-
可能每天一次或每天两次。它不经常
-
所以我想真正的问题是您是否真的需要为此构建功能,或者这是一个 1% 的用例,您可能不会充分使用此功能以使其物有所值。如果您不会经常使用它,请编辑 XML 并在一天结束时或在维护窗口期间重新启动您的 Web 应用程序。
-
是的,我同意你的看法。考虑到这是一个有效的场景。我将如何解决它
-
您可以使用 JMX 接口在更新后重置 EHCache。这个线程上的这个人有同样的问题。 stackoverflow.com/questions/10912087/…
标签: java multithreading caching ehcache