浏览 5073 次
锁定老帖子 主题:JForum源码学习研究3-cache
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||
发表时间:2008-04-06
JForum的cache是由net.jforum.cache包下的类来实现的
net.jforum.repository包下的类都是Cacheable.java接口的实现类,每个repository类通过静态方法提供具体的业务cache方法。
net.jforum.JForumBaseServlet.java是JForum中servlet的一个基类,在它的init方法中调用了ConfigLoader.startCacheEngine();方法来初始化所有的Repository。在这个方法中,JForum从SystemGlobals.properties文件中取得Cache引擎的类型,实例化它,之后从这个配置文件中继续取出repository的列表,然后依次实例化每个repository并将Cache引擎注入。 public static void startCacheEngine() { try { String cacheImplementation = SystemGlobals.getValue(ConfigKeys.CACHE_IMPLEMENTATION); logger.info("Using cache engine: " + cacheImplementation); cache = (CacheEngine)Class.forName(cacheImplementation).newInstance(); cache.init(); String s = SystemGlobals.getValue(ConfigKeys.CACHEABLE_OBJECTS); if (s == null || s.trim().equals("")) { logger.warn("Cannot find Cacheable objects to associate the cache engine instance."); return; } String[] cacheableObjects = s.split(","); for (int i = 0; i < cacheableObjects.length; i++) { logger.info("Creating an instance of " + cacheableObjects[i]); Object o = Class.forName(cacheableObjects[i].trim()).newInstance(); if (o instanceof Cacheable) { ((Cacheable)o).setCacheEngine(cache); } else { logger.error(cacheableObjects[i] + " is not an instance of net.jforum.cache.Cacheable"); } } } catch (Exception e) { throw new CacheEngineStartupException("Error while starting the cache engine", e); } } net.jforum.ConfigLoader
如果要在JForum项目中扩展一个cache功能,只需要实现一个Cacheable.java接口的repository类,并在SystemGlobals.properties中的cacheable.objects参数中配置这个repository就可以了。 cacheable.objects = net.jforum.repository.BBCodeRepository, \ net.jforum.repository.RankingRepository, \ net.jforum.repository.SmiliesRepository, \ net.jforum.repository.ForumRepository, \ net.jforum.repository.TopicRepository, \ net.jforum.SessionFacade, \ net.jforum.repository.PostRepository, \ net.jforum.repository.Tpl, \ net.jforum.repository.RolesRepository, \ net.jforum.repository.SecurityRepository, \ net.jforum.repository.BanlistRepository SystemGlobals.properties 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||||||||||||
返回顶楼 | |||||||||||||