来源: http://www.dlog.cn/wojiushicai/diary/11711
互联网上有着众多优秀的开源软件,但是却很少有系统化的,优秀的文档来说明这些软件的使用、开发与研究。而这些软件的中文文档和设计文档就更加少之又少了。我们试图编写一些这方面的中文文章,讲解这些优秀开源软件的使用、开发与研究问题,最终形成手册。由于水平有限,希望大家多多支持,有写得不当的地方也恳请大家指正。
研究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启动时执行的一系列操作,如加载配置、初始化核心组件、注册监听器等。这个过程保证了论坛在启动后能正确地提供服务。开发者可以通过跟踪源代码或日志来理解这一过程,以便在出现问题时快速定位...
《深入解析jforum3.0所需jar包》 在Java Web开发领域,...开发者通常会将这些jar包放在WEB-INF/lib目录下,以便Web服务器在启动时自动加载。理解这些jar包的作用和功能,有助于我们更好地理解和维护jForum3.0应用。
然后,启动Tomcat服务器,JForum会自动解压并部署。访问`http://localhost:8080/jforum`(假设Tomcat默认端口为8080),如果出现JForum的安装向导页面,说明部署成功。 在安装向导中,你需要配置数据库连接信息,...
具体的配置步骤可能涉及修改`forum.properties`或其他相关配置文件,确保JForum在启动时加载并使用自定义的SSO实现。 通过以上步骤,JForum就可以识别已登录主应用的用户,从而实现单点登录。这种方式简化了用户在...
将这些jar包添加到Web服务器的`lib`目录,使得服务器在启动时能够加载这些依赖。 6. **数据库设置**:JForum需要一个数据库来存储论坛的数据,如用户信息、帖子、主题等。常见的选择有MySQL、PostgreSQL或Oracle。...
运行服务器,如果配置正确,Jforum应该可以在指定端口上启动。 5. **调试与优化**:使用MyEclipse的调试工具进行代码调试,检查和修复可能出现的问题。根据性能监控结果进行必要的优化,如调整缓存策略、数据库查询...
在深入理解Jforum的过程中,源码解析是至关重要的一步。 **源码解析** Jforum的源码结构清晰,采用MVC(模型-视图-控制器)设计模式,使得代码维护和扩展变得容易。主要的组成部分包括: 1. **模型层(Model)**:...
本文将详细探讨JForum 2.1.8的特性、安装过程及其背后的编程理念。 首先,JForum 2.1.8的核心特性包括: 1. **多语言支持**:JForum支持多种语言,方便不同地区的用户参与讨论,提供良好的用户体验。 2. **高效...
下载JForum3源码后,使用构建工具导入项目,配置好数据库连接,即可启动服务器进行测试和开发。 总结来说,JForum3是一个成熟的Java论坛解决方案,它的完整源代码对于Java Web开发者来说是一个宝贵的资源,无论是...
3. **漏洞利用过程** 漏洞利用通常涉及几个步骤:识别漏洞、构造攻击向量、执行攻击和获取结果。在JForum的场景中,攻击者可能首先发现论坛的某个功能处理用户输入时存在不当验证,然后构造特殊的输入数据,通过...
JForum基于BSD授权,这意味着在使用过程中不必担心版权问题。该论坛采用自有的MVC框架,初次接触可能需要适应,但一旦熟悉,就能方便地进行定制和开发。 在创建JForum论坛之前,需要准备以下软件环境: 1. JDK:...
整合JForum和CKEditor的过程主要包括以下几个步骤: 1. **下载和准备** - 首先,你需要从官方网站或GitHub仓库获取JForum的源代码。在这个案例中,我们使用的是版本rafalsteil-jforum2-5eafc79。 - 同时,你也...
**JForum3源代码详解** JForum是一款广受欢迎的开源论坛软件,以其强大的功能、友好的用户界面和清晰的代码结构赢得了全球开发者的青睐。它支持多种语言,包括简体中文,这使得JForum能够满足不同地区用户的交流...
JForum3是一款基于Java开发的开源论坛系统,其核心设计目标是提供一个高效、稳定且功能丰富的在线讨论平台。这款论坛软件使用了Java语言编写,遵循开放源代码的原则,允许用户自由地使用、修改和分发。JForum3是...
6. **启动应用服务**:通过命令行或IDE启动jForum应用程序。 7. **访问首页**:在浏览器中输入http://localhost:8080/jforum即可看到论坛首页。 #### 五、常见问题解答 1. **如何解决安装过程中的错误提示?** - ...
JForum是一款基于Java开发的开源论坛系统,它以其高效、稳定和易于扩展的特点在开源社区中受到广泛欢迎。对于想要深入了解FreeMarker模板引擎的开发者来说,JForum的源码是一个绝佳的学习资源。本篇文章将深入探讨...
本文将详细探讨Jforum的二次开发过程,以及如何利用Eclipse进行开发,并介绍增加的如子论坛、主页、热门帖子、推荐帖子等功能。 一、Jforum二次开发基础 1.1 Jforum框架理解:Jforum采用MVC(Model-View-...
《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和...持续学习和实践,你将更熟练地掌握这一过程,更好地利用jForum和MS SQLServer搭建出高效的在线社区平台。