`

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论坛系统的初始化过程结束。
分享到:
评论

相关推荐

    Jforum相关文档和PPT

    这个过程保证了论坛在启动后能正确地提供服务。开发者可以通过跟踪源代码或日志来理解这一过程,以便在出现问题时快速定位原因。 处理请求的流程主要遵循Model-View-Controller(MVC)设计模式。在Jforum中,用户...

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

    ### JForum 源码分析 #### 一、引言 JForum是一个强大的开源论坛系统,采用MVC(Model-View-Controller)架构设计。它不仅功能全面且易于管理,适用于任何Servlet容器与EJB服务器环境。对于希望深入了解Java Web...

    jforum3.0所需要的jar包

    这些jar包增强了jForum的功能并简化了开发过程。 7. **Jforum核心jar**:最后,jforum-*.jar是jForum自身的核心库,包含了论坛系统的业务逻辑和具体实现。这些jar包是jForum3.0的核心组成部分,确保了论坛的各项...

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

    在深入理解Jforum的过程中,源码解析是至关重要的一步。 **源码解析** Jforum的源码结构清晰,采用MVC(模型-视图-控制器)设计模式,使得代码维护和扩展变得容易。主要的组成部分包括: 1. **模型层(Model)**:...

    jforum安装

    然后,启动Tomcat服务器,JForum会自动解压并部署。访问`http://localhost:8080/jforum`(假设Tomcat默认端口为8080),如果出现JForum的安装向导页面,说明部署成功。 在安装向导中,你需要配置数据库连接信息,...

    Jforum2.19

    运行服务器,如果配置正确,Jforum应该可以在指定端口上启动。 5. **调试与优化**:使用MyEclipse的调试工具进行代码调试,检查和修复可能出现的问题。根据性能监控结果进行必要的优化,如调整缓存策略、数据库查询...

    jforum漏洞利用源代码

    《JForum漏洞利用源代码解析》 ...总结,理解并分析JForum漏洞利用源代码对于提高系统安全性至关重要。无论是开发者还是系统管理员,都需要具备识别和应对安全漏洞的能力,以保障论坛系统的稳定运行和用户数据的安全。

    jforum3.0项目需要的jar包

    9. **部署过程**:一旦所有依赖项准备就绪,你可以将解压后的JForum项目文件复制到Web服务器的相应目录,如Tomcat的`webapps`目录。然后,启动服务器,如果一切配置正确,JForum应该可以正常运行。 10. **安全性与...

    jforum2.1.8

    本文将详细探讨JForum 2.1.8的特性、安装过程及其背后的编程理念。 首先,JForum 2.1.8的核心特性包括: 1. **多语言支持**:JForum支持多种语言,方便不同地区的用户参与讨论,提供良好的用户体验。 2. **高效...

    Jforum二次开发成果

    本文将详细探讨Jforum的二次开发过程,以及如何利用Eclipse进行开发,并介绍增加的如子论坛、主页、热门帖子、推荐帖子等功能。 一、Jforum二次开发基础 1.1 Jforum框架理解:Jforum采用MVC(Model-View-...

    jforum3源代码

    JForum3可能提供了API接口,允许与其他系统进行集成,如社交媒体登录、第三方统计分析等。 通过研究JForum3的源代码,开发者不仅可以学习到Java Web开发的最佳实践,还能掌握如何构建一个健壮、易扩展的社区平台。...

    JForum_SSO_-_JForum单点登陆原理与配置

    具体的配置步骤可能涉及修改`forum.properties`或其他相关配置文件,确保JForum在启动时加载并使用自定义的SSO实现。 通过以上步骤,JForum就可以识别已登录主应用的用户,从而实现单点登录。这种方式简化了用户在...

    JForum3 完整项目

    下载JForum3源码后,使用构建工具导入项目,配置好数据库连接,即可启动服务器进行测试和开发。 总结来说,JForum3是一个成熟的Java论坛解决方案,它的完整源代码对于Java Web开发者来说是一个宝贵的资源,无论是...

    利用JForum创建论坛

    JForum基于BSD授权,这意味着在使用过程中不必担心版权问题。该论坛采用自有的MVC框架,初次接触可能需要适应,但一旦熟悉,就能方便地进行定制和开发。 在创建JForum论坛之前,需要准备以下软件环境: 1. JDK:...

    JForum3 jforum java 开源论坛 论坛

    JForum3是一款基于Java开发的开源论坛系统,其核心设计目标是提供一个高效、稳定且功能丰富的在线讨论平台。...无论是从功能实现、架构设计还是源码分析的角度,JForum3都是值得深入研究的Java项目。

    jforum 源码

    通过分析源码,你可以了解到如何实现数据缓存,减少对数据库的访问。 9. **论坛功能实现** JForum提供了丰富的论坛功能,如发帖、回帖、版块管理等。源码中包含了这些功能的具体实现,如帖子的CRUD操作、版块的...

    jforum+ckeditor整合案例

    整合JForum和CKEditor的过程主要包括以下几个步骤: 1. **下载和准备** - 首先,你需要从官方网站或GitHub仓库获取JForum的源代码。在这个案例中,我们使用的是版本rafalsteil-jforum2-5eafc79。 - 同时,你也...

    jforum2论坛源码

    这个过程涉及到软件开发的完整生命周期。 6. **数据库设计**:jforum2可能使用关系型数据库(如MySQL或PostgreSQL)存储数据。通过查看源码,我们可以学习数据库表结构设计,以及如何通过SQL语句进行数据操作。 7....

Global site tag (gtag.js) - Google Analytics