转载:http://www.jeedao.net/archives/4.html
互联网上有着众多优秀的开源软件,但是却很少有系统化的,优秀的文档来说明这些软件的使用、开发与研究。而这些软件的中文文档和设计文档就更加少之又少了。我们试图编写一些这方面的中文文章,讲解这些优秀开源软件的使用、开发与研究问题,最终形成手册。由于水平有限,希望大家多多支持,有写得不当的地方也恳请大家指正。
研究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启动时执行的一系列操作,如加载配置、初始化核心组件、注册监听器等。这个过程保证了论坛在启动后能正确地提供服务。开发者可以通过跟踪源代码或日志来理解这一过程,以便在出现问题时快速定位...
这些jar包增强了jForum的功能并简化了开发过程。 7. **Jforum核心jar**:最后,jforum-*.jar是jForum自身的核心库,包含了论坛系统的业务逻辑和具体实现。这些jar包是jForum3.0的核心组成部分,确保了论坛的各项...
然后,启动Tomcat服务器,JForum会自动解压并部署。访问`http://localhost:8080/jforum`(假设Tomcat默认端口为8080),如果出现JForum的安装向导页面,说明部署成功。 在安装向导中,你需要配置数据库连接信息,...
运行服务器,如果配置正确,Jforum应该可以在指定端口上启动。 5. **调试与优化**:使用MyEclipse的调试工具进行代码调试,检查和修复可能出现的问题。根据性能监控结果进行必要的优化,如调整缓存策略、数据库查询...
9. **部署过程**:一旦所有依赖项准备就绪,你可以将解压后的JForum项目文件复制到Web服务器的相应目录,如Tomcat的`webapps`目录。然后,启动服务器,如果一切配置正确,JForum应该可以正常运行。 10. **安全性与...
本文将详细探讨JForum 2.1.8的特性、安装过程及其背后的编程理念。 首先,JForum 2.1.8的核心特性包括: 1. **多语言支持**:JForum支持多种语言,方便不同地区的用户参与讨论,提供良好的用户体验。 2. **高效...
JForum基于BSD授权,这意味着在使用过程中不必担心版权问题。该论坛采用自有的MVC框架,初次接触可能需要适应,但一旦熟悉,就能方便地进行定制和开发。 在创建JForum论坛之前,需要准备以下软件环境: 1. JDK:...
6. **启动应用服务**:通过命令行或IDE启动jForum应用程序。 7. **访问首页**:在浏览器中输入http://localhost:8080/jforum即可看到论坛首页。 #### 五、常见问题解答 1. **如何解决安装过程中的错误提示?** - ...
《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和...持续学习和实践,你将更熟练地掌握这一过程,更好地利用jForum和MS SQLServer搭建出高效的在线社区平台。
- **数据库兼容性**:JForum支持多种数据库,但在安装过程中,需要注意不同数据库之间的兼容性问题。 - **编码问题**:在处理中文时,一定要确保整个系统从数据库到Web容器都使用相同的编码格式,通常推荐使用UTF-8...
4. **启动服务器**:如果服务器未运行,启动它。当Tomcat检测到新的WAR文件时,它会自动解压文件并创建对应的Web应用目录。 5. **数据库配置**:JForum需要连接到一个数据库来存储论坛数据。根据你的需求,可以是...
在这个过程中,你不仅学会了JForum的安装与配置,还掌握了Web应用的部署以及性能测试的基础知识。在实际操作中,你可能会遇到各种问题,但只要按照步骤细心操作,查阅相关文档,相信你一定能克服困难,搭建出一个...
用户只需简单几步,就能在本地或远程服务器上启动论坛服务。 **4. How to Install.htm和Documentation.htm** 这两个文件是JForum的安装指南和官方文档。"How to Install.htm"提供了详细的安装步骤,包括数据库连接...
本文将介绍 JForum 的基本功能和安装配置过程。 一、JForum 特性 JForum 的特性包括: * 基于开源技术,对开源技术进行整合和创新 * 学习、研究商用软件以及开源软件的功能和特性,为创新打好需求基础 * 跟踪关键...
首先,我们需要下载并安装WebScarab,通过命令行`java -jar webscarab-installer-20070504-1631.jar`启动。接着,设置IE浏览器的代理设置为`localhost`,端口`8008`。开启WebScarab的Full模式,拦截所有HTTP请求,但...
消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被...