JForum的cache是由net.jforum.cache包下的类来实现的
Cacheable.java | 这个接口为Repository实现提供cache引擎 |
CacheEngine.java | JForum的Cache引擎接口 |
DefaultCacheEngine.java | JForum提供的默认cache引擎实现 |
EhCacheEngine.java | EhCache的cache引擎实现 |
JBossCacheEngine.java | JbossCache的cache引擎实现 |
JBossCacheListener.java | Jboss的TreeCacheListener实现 |
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
分享到:
- 2008-04-06 23:06
- 浏览 2883
- 评论(0)
- 论坛回复 / 浏览 (0 / 5040)
- 查看更多
相关推荐
开源BBS--JForum 源码 开源BBS--JForum 源码
JForum 是一个功能强大 ,易于管理的论坛。它的设计完全遵从MVC设计模式,能够在任何Servlet容器与EJB服务器上运行。而且可以轻松的定制与扩展JForum论坛。
jforum-2.1.8-src.zip,源码
JForum 开源代码,是很好的freeMaker学习素材。
Personally think is the best forum for the Java source code, open source, you can watch the official website of the latest developments http://www.jforum.net/
JForum 是采用Java开发的功能强大且稳定的论坛系统。它提供了抽象的接口、高效的论坛引擎以及易于使用的管理界面,同时具有完全的权限控制、多语言支持(包括中文)、高性能、可自定义的用户接口、安全、支持多...
jforum 2.1.9源码 内附安装开发文档
jforum-2.1.8-编译代码.zip
JForum 是采用Java开发的功能强大且稳定的论坛系统。它提供了抽象的接口、高效的论坛引擎以及易于使用的管理界面,同时具有完全的权限控制、多语言支持(包括中文)、高性能、可自定义的用户接口、安全、支持多...
jforum的开发文档,以及源码解析 数据库 重要配置文件和包,缓存 权限控制 单点登录
jforum3.0从SVN上导出来的时候缺少jar包,经过不断的测试与添加终于能在myeclipse下面运行啦。可是现在的jforum3.0仍然...如果不介意的话可以下载回去研究一下哦。我上传的东西没有jar包哦,jar包我会打包另行上传的。
个人认为是最好的Java论坛源码,开源的,可以到官方网站看最新动态http://www.jforum.net/
JForum 是采用Java开发的功能强大且稳定的论坛系统。它提供了抽象的接口、高效的论坛引擎以及易于使用的管理界面,同时具有完全的权限控制、多语言支持(包括中文)、高性能、可自定义的用户接口、安全、支持多...
对于我们已有的WEB应用中的用户,若该用户已经登陆,并通过 联结迁移到JForum页面时,JForum要能够识别该用户已经登陆(不需要二次登陆)才不会让用户感到别扭(对用户来说,就好像使用的是同一个系统似的)。...
Jforum-2.1.9-myeclipse导入myeclipse直接使用
开源论坛jforum-2.1.9源码,带数据库
jforum3源代码数据库
jforum 完整源代码,从svn上 导出 没有任何修改
2.启动tomcat, 访问如:http://172.18.20.164:8080/install.jsp,设置相关参数,此是在WEB-INF/config下会生成jforum-custom.conf配置文件。 为了解决中文问题修改了WebRequestContext.java类。 第149行,default....