`

JForum启动过程分析

阅读更多
       互联网上有着众多优秀的开源软件,但是却很少有系统化的,优秀的文档来说明这些软件的使用、开发与研究。而这些软件的中文文档和设计文档就更加少之又少了。我们试图编写一些这方面的中文文章,讲解这些优秀开源软件的使用、开发与研究问题,最终形成手册。由于水平有限,希望大家多多支持,有写得不当的地方也恳请大家指正。

  研究JForum论坛应该从JForum的启动加载过程开始,这样才能够更清楚程序运行的来龙去脉。

  JForum架构是遵循MVC设计模式实现的,其中net.jforum.JForum类是其实现MVC设计模式的控制器,也就是说它是MVC中的“C”。查看net.jforum.JForum.java文件我们不难发现其实JForum.java文件是一个继承JForumBaseServlet.java的类,而JForumBaseServlet.java是继承HttpServlet的类。也就是说我们可以把JForum.java当作一个Servlet来看待。

  那么,初始化过程当中首先被调用的就是JForum.java中的init()函数,在init()函数中调用了super.init()以及super.startFrontController(),所以JForum启动的初始化过程还包括了他的基类JForumBaseServlet.java的启动过程。下面我们就来看看JForumBaseServlet.java在初始化的时候都做了那些事情。

  net.jforum.JForumBaseServlet.java的初始化:

  1、判断JForum论坛是否以调试模式启动运行,通过读取web.xml中net.jforum.JForum的初始化参数“development”来确定。该值默认值为“true”,所以JForum论坛默认是以调试模式运行的。

  2、载入系统运行日志log4j的配置文件。

  3、调用ConfigLoader.startSystemglobals(appPath)读取\WEB-INF\config\SystemGlobals.properties的配置信息。SystemGlobals.properties的配置信息还是比较多的,基本上包括了JForum论坛系统所有的全局变量配置了,以后我们有机会再一一论述。

  4、调用ConfigLoader.startCacheEngine()启动系统缓存引擎。

  5、设置页面模版引擎,JForum使用的FreeMarker来实现论坛展现模版定制的功能,使普通的美术设计人员也能够通过修改默认模版来定制论坛的展现方式。

  6、调用ModulesRepository.init(SystemGlobals.getValue(ConfigKeys.CONFIG_DIR)),载入程序模块映射。具体的配置文件是\WEB-INF\config\modulesMapping.properties,该文件描述了模块名与实现该模块功能的java类的对应关系。

  7、调用loadConfigStuff(),载入页面URL与参数的配置;国际化配置文件;URL与模版具体文件的具体文件路径与名字的对应配置,详见\WEB-INF\config\templatesMapping.properties文件;载入BB Code配置。

  我们再来看看net.jforum.JForumBaseServlet.java的startFrontController()函数做了些什么。

  1、调用SystemGlobals.loadQueries(SystemGlobals.getValue(ConfigKeys.SQL_QUERIES_GENERIC))和SystemGlobals.loadQueries(SystemGlobals.getValue(ConfigKeys.SQL_QUERIES_DRIVER))载入SQL语句。在JForum中为了支持多数据库,其所有的SQL语句都是放在配置文件当中的。

  2、载入quartz工作任务配置。关于quartz你可以参考这个连接:http://www.opensymphony.com/quartz/

  3、调用ConfigLoader.loadDaoImplementation()载入DAO实现类,这是实现多数据库支持的一种方式。关于实现多数据库支持还有更多更好的方法,例如:ibatis、Hibernate等。

  4、调用ConfigLoader.listenForChanges()加载需要监控其更新变化的文件,对文件的更新进行监控。

  5、调用ConfigLoader.startSearchIndexer()初始化论坛搜索引擎。

  6、调用ConfigLoader.startSummaryJob()启动论坛发帖汇总信息电子邮件发送任务。

  从上面的说明中可以看到net.jforum.JForumBaseServlet.java的初始化基本上包括了JForum的大部分初始化工作。

  下面我们回到net.jforum.JForum.java文件看看还有什么初始化工作。

  1、调用ForumStartup.startForumRepository()载入论坛相关信息到缓存中,包括论坛目录信息、用户信息、在线用户信息等。

  2、调用RankingRepository.loadRanks()载入论坛用户等级信息。

  3、调用SmiliesRepository.loadSmilies()载入表情符号信息。

  4、调用BanlistRepository.loadBanlist()载入阻止列表。

  到此为止JForum论坛系统的初始化过程结束。
分享到:
评论

相关推荐

    JForum3 jforum java 开源论坛 论坛

    JForum3 jforum java 开源论坛 论坛

    jforum3.0所需要的jar包

    jforum3.0所需要的jar包

    JForum论坛数据库表结构.rar

    1、附件关系表JFORUM_ATTACH 2 2、附件详细信息表JFORUM_ATTACH_DESC 2 3、附件配置限定关系表JFORUM_ATTACH_QUOTA 2 4、封锁表JFORUM_BANLIST 2 5、标识表JFORUM_BANNER 3 6、书签表JFORUM_BOOKMARKS 3 7、...

    jforum漏洞利用源代码

    jforum漏洞利用源代码

    jforum功能说明

    JForum是著名的开源论坛,支持多达数十种的多国语言,其中包括简体中文。JForum功能强大,界面美观,加上代码结构清晰,而且采用的是BSD授权,不必担心不必要的版权纠纷。可以说JForum是论坛二次开发的绝佳选择。 ...

    Jforum论坛数据库架构

    Jforum论坛数据库架构Jforum论坛数据库架构

    JForum3 完整项目

    jforum 完整源代码,从svn上 导出 没有任何修改

    JForum Source Analysis JForum开源论坛的源码分析

    JFourm开源论坛,在官网中可以下载,然后进行二次开发。 其中呢,我们学习很多知识。 这里是源码分析,JForum自己的MVC是如何运行的, 这是看到的一篇文章,简单的跟大家分析一下。

    Jforum数据库

    JForum - Java论坛系统 数据库表结构,如:附件关系表JFORUM_ATTACH,附件详细信息表JFORUM_ATTACH_DESC,用户分组表JFORUM_GROUPS等表结构说明,如帖子表JFORUM_POSTS说明: 名称 字段名 字段类型 字段说明 帖子...

    jforum开源的论坛文档

    jforum开源的论坛文档jforum开源的论坛文档jforum开源的论坛文档

    JForum数据库ER图

    JForum 开源论坛系统的 数据库ER图,很详细。

    JForum2.6.2.rar

    1、包含jforum2.6.2的war包、源码包 2、war包可直接放在tomcat的webapps目录下 3、2.6.2版本里面自带汉化功能,在http://localhost:8080/jforum/install.jsp安装时,注意选择中文

    jforum论坛整合说明

    本文档是自己在做jforum二次开发过程中遇到的一些问题的总结。如果你做jforum整合,相信会给你帮助。

    jforum3源代码 数据库

    jforum3源代码数据库

    jforum安装部署指南

    jforum安装部署指南:修改对应的数据库文件JFORUM\WEB-INF\config\database下面。例如:mysql.properties修改其中的数据库信息

    jforum 源码

    JForum 开源代码,是很好的freeMaker学习素材。

    jforum说明文档 源码解析 单点登录 jforum缓存

    jforum的开发文档,以及源码解析 数据库 重要配置文件和包,缓存 权限控制 单点登录

    jforum+ckeditor整合案例

    jforum与ckeditor整合,替换自带的编辑器

    Jforum二次开发成果

    Jforum二次开发成果 Jforum 二次开发 eclipse 给予JForum 2.1.8开发的一个小论坛。 增加了很多功能。(子论坛、主页、热门帖子、推荐帖子等)

    JForum 2.1.9 源码包.zip

    JForum 是采用Java开发的功能强大且稳定的论坛系统。它提供了抽象的接口、高效的论坛引擎以及易于使用的管理界面,同时具有完全的权限控制、多语言支持(包括中文)、高性能、可自定义的用户接口、安全、支持多...

Global site tag (gtag.js) - Google Analytics