JEECMS 2.3.2架构分析
2014-05-04 21:43
232 查看
对于一个编程人员来说,这种东西的内在架构还是值得一看的。不过也完全没有那么神秘或者说深奥。今天我就抽出1个小时,剖析一下 JEECMS 2.3.2这个J2EE版的开源CMS。之所以选择这个开源系统,是因为有人号称,这个系统比我之前自己设计的架构还要高一个档次。所以,我也很想一探究竟。看看到底有没有高出一个档次。
这个系统在半年前我就玩过并且部署过了,那个时候这个系统还是没有完全开源,还是1.0 Beta版,因为好几个关键jar包都没有开放源码,也就没有研究他的架构,而是不断的学习眼前的知识。直到前些天,一个大四的师兄说用这个系统改了一个网站,才让我重拾以前封尘已久的记忆。当然我当时也没有打算去研究这个开源系统,但是直到后来有个人说这个系统比我的架构高一个档次的时候,我决定花上一点时间一窥究竟。证实一下这个说法。同时也让自己设计能力长进一下。
切入正题----------------------
剖析系统第一步,当然要先部署上了,首先查看其install目录的jsp文件,得知其web.xml是在安装过程中拷贝过去的,SQL文件也一览无余,所以俺把源码放好,web.xml拷贝过去,建了库。顺利部署。
然后就是窥探其web.xml了,通过web.xml可以得知这个系统采用了:struts2+hibernate+spring+FreeMarker(当然这个东东不需要要配置),通过Jar包版本,我可以知道用的是struts2.1.6,hibernate3.3,spring2.5系列。此外在线编辑器是Fckeditor2.4,还用了一个验证码组件,以及路由过滤器,Proxool连接池。我们仅通过这一个配置文件就可以了解到这些。
然后是窥探spring配置文件,看看我们能发现什么,首先这个系统采用的是spring紧耦合hibernate,好处就是省去一个文件,坏处就是耦合过紧,不易拆分。此外开启了hibernate二级缓存,缓存采用ehcache1.6,此外加入了spring事务,事务处理通过Annotation注入,半年前系统学习过源注释,也深知其使用的优缺点。优点干净简洁易修改,缺点不利于维护,业务与配置混杂。
通过引用的jar包可以知道其适用的是dom4j操作xml,全文索引采用了lucene+paoding,日志系统采用slf4j+logback,OK,上面所列举的种种组件也很大众化,没什么技术难点。
通过查看组件的配置,可以知道其部分数据做了持久化缓存,例如站点实体,全局变量,功能集等等,不详细举出了。Struts2采用了分散配置的做法,这样功能模块更加的清晰。通过查看其配置可以知道使用了struts2的validate组件。这个系统把所有模板都放入了WEB-INF下,这样安全性进一步提升了,这也是我感觉非常棒的做法。不过这种方案以前也早就知道。
源代码分为七部分,分别是文章部分,辅助模块部分,CMS系统部分,核心部分,下载部分,模板部分,以及ponyjava工具包。其中文章,核心,辅助,CMS,下载更新模块都采用了SSH2的七层结构。至于类的内部结构,我也不做过多解释了,因为这篇文章只是说架构的。
因为源码里没有测试包,所以俺不清楚这个系统用的啥测试,不过这也不是重点。单从以上分析来开,此系统基于整站模板引擎技术,js,Css,图片等资源与模板分离,模板放置在WEB-INF下,因此仅能通过struts2去调用,安全性非常棒,分离也非常清晰。页面请求使用了伪静态,便于搜索引擎收录。然后就是有一套完善的日志系统,搜索采用了流行的lucene和baoding分词做搭配。此外数据库配有连接池,并且配有二级缓存与持久化缓存。验证码也使用了现成的组件,Ajax使用了Json介质,在线编辑器使用的FCK。FCK禁用了浏览服务器,而且FCK的上传资源也不提供管理,所以并没有超越我扩展后的FCK,源码的研究价值还是比较大的。尤其是一些工具类,非常具有参考价值。
架构分析到这,我觉得这样的架构设计的非常合理,如果说掌握这样的架构五年内不用学习新技术,那眼界真的有够渺小,多读读书吧。
这个系统在半年前我就玩过并且部署过了,那个时候这个系统还是没有完全开源,还是1.0 Beta版,因为好几个关键jar包都没有开放源码,也就没有研究他的架构,而是不断的学习眼前的知识。直到前些天,一个大四的师兄说用这个系统改了一个网站,才让我重拾以前封尘已久的记忆。当然我当时也没有打算去研究这个开源系统,但是直到后来有个人说这个系统比我的架构高一个档次的时候,我决定花上一点时间一窥究竟。证实一下这个说法。同时也让自己设计能力长进一下。
切入正题----------------------
剖析系统第一步,当然要先部署上了,首先查看其install目录的jsp文件,得知其web.xml是在安装过程中拷贝过去的,SQL文件也一览无余,所以俺把源码放好,web.xml拷贝过去,建了库。顺利部署。
然后就是窥探其web.xml了,通过web.xml可以得知这个系统采用了:struts2+hibernate+spring+FreeMarker(当然这个东东不需要要配置),通过Jar包版本,我可以知道用的是struts2.1.6,hibernate3.3,spring2.5系列。此外在线编辑器是Fckeditor2.4,还用了一个验证码组件,以及路由过滤器,Proxool连接池。我们仅通过这一个配置文件就可以了解到这些。
然后是窥探spring配置文件,看看我们能发现什么,首先这个系统采用的是spring紧耦合hibernate,好处就是省去一个文件,坏处就是耦合过紧,不易拆分。此外开启了hibernate二级缓存,缓存采用ehcache1.6,此外加入了spring事务,事务处理通过Annotation注入,半年前系统学习过源注释,也深知其使用的优缺点。优点干净简洁易修改,缺点不利于维护,业务与配置混杂。
通过引用的jar包可以知道其适用的是dom4j操作xml,全文索引采用了lucene+paoding,日志系统采用slf4j+logback,OK,上面所列举的种种组件也很大众化,没什么技术难点。
通过查看组件的配置,可以知道其部分数据做了持久化缓存,例如站点实体,全局变量,功能集等等,不详细举出了。Struts2采用了分散配置的做法,这样功能模块更加的清晰。通过查看其配置可以知道使用了struts2的validate组件。这个系统把所有模板都放入了WEB-INF下,这样安全性进一步提升了,这也是我感觉非常棒的做法。不过这种方案以前也早就知道。
源代码分为七部分,分别是文章部分,辅助模块部分,CMS系统部分,核心部分,下载部分,模板部分,以及ponyjava工具包。其中文章,核心,辅助,CMS,下载更新模块都采用了SSH2的七层结构。至于类的内部结构,我也不做过多解释了,因为这篇文章只是说架构的。
因为源码里没有测试包,所以俺不清楚这个系统用的啥测试,不过这也不是重点。单从以上分析来开,此系统基于整站模板引擎技术,js,Css,图片等资源与模板分离,模板放置在WEB-INF下,因此仅能通过struts2去调用,安全性非常棒,分离也非常清晰。页面请求使用了伪静态,便于搜索引擎收录。然后就是有一套完善的日志系统,搜索采用了流行的lucene和baoding分词做搭配。此外数据库配有连接池,并且配有二级缓存与持久化缓存。验证码也使用了现成的组件,Ajax使用了Json介质,在线编辑器使用的FCK。FCK禁用了浏览服务器,而且FCK的上传资源也不提供管理,所以并没有超越我扩展后的FCK,源码的研究价值还是比较大的。尤其是一些工具类,非常具有参考价值。
架构分析到这,我觉得这样的架构设计的非常合理,如果说掌握这样的架构五年内不用学习新技术,那眼界真的有够渺小,多读读书吧。
相关文章推荐
- 日均百万PV架构第一弹(基本架构搭建) 推荐
- 由12306.cn谈谈网站性能技术
- keepalived 双主+haproxy高可用
- Web基础架构:负载均衡和LVS
- 学习网站
- 系统架构 之 高性能数据传输系统的框架设计
- 网站页面屏蔽右键菜单的做法
- NUMA架构
- 怎么让百度收录网站的图片呢?
- 探讨Exchange 2013的高可用设计
- PHP攻击网站防御代码-以及攻击代码反译
- 网站常见漏洞的危害与解决方案
- 企业何缓解网站流量下降,将损失缩到最小。
- Web基础架构:负载均衡和LVS
- 如果查看所访问网站所用的服务器
- 心率变异性分析网站
- 网站防止转载,复制的解决办法
- 从三个角度简单列举网站经营管理中会遇到的问题
- Z-Stack 软件架构分析
- Z-Stack 软件架构分析