读者提示:jspxcms研究1)支持maven;2)支持postgresql数据库。
//=======================废话开始================================
终于有时间好好学习一些CMS的东东了,目前主要关注国内的两个开源软件jeecms和jspxcms,主要是因为简单的CMS发布原理,就是根据栏目让内容静态化页面。当然选择这两家除了这些外,最重要的可扩展的页面互动功能。
从技术上来说,就是一个Freemarker生成静态页面;从这个基本点出发,纵观开源的cms代码,可谓说为了达到这个静态化,有很多软件就“不择手段”了。狭义上理解一种就是伪静态,一种是纯静态。
伪静态主要是rewrite重写的方式,或者页面部分静态化,其它部分由js来调用,也就是所谓的ajax来和用户互动。这也是很多php、rails等解释性语言最擅长的,比如CMS的业界老大wordPress。
如果你有强迫症,认为伪静态的CMS就不能叫做CMS,你的内心需要一个干净的世界,那怕开发起来很费劲,哪你应该看看以freemarker或者valocity为模板的静态页面生成实现。国内在这一方面也比较成熟,尤其是jeecms和jspxcms的开源实现。
说到这两个软件,在研究了下代码后,感觉如出一辙,其实他们是一家人,就江西的一般哥们在写。虽然技术原理上有所差别,但用的开源软件框架都是一样的,网上也流传从jeecms分家的消息,在这里就不表了。
其实严格来说,这两家都不算真正的开源软件;jeecms有大部分的功能都进入了黑盒子,比如core包;jspxcms也有一些高级功能只能付费才能使用,比如站点管理、发布点等等。从技术人员角度来说:前者让人直接掉进陷阱里,后者掐脖子方式来进行勒索。从商业角度来说,我还是比较肯定他们的做法的。
这种值得商酌的经营模式,有的时候浪费“程序猿”或者“功城狮”的情感。放眼看下国外的做法,咱们把区域锁定在java界里,Magnolia是CMS的代表,他们现在追求一种标准,cms除了静态页面还有支持更多的浏览设备,包括流行的手持设备;支持FreeMarker,Groovy,GWT,Vaadin等。于是我就上官网下载war包,运行后发现也算能符合国人的习惯,尤其类似FLASH样的操作感受。但是,我说的是但是找源代码下载,木有;然后我在google code和git hub还有apache上找,真的是木有;大大的木有;这招且其名曰:要商业授权!
再然后就没有然后了。
于是我得出一个结论:天下乌鸦一般黑。
//=======================废话结束====================================
1)支持maven
操作方法,先把一些大的组件先加上,然后找不到的类,直接使用<systemPath>,比如:
<dependency> <groupId>IKAnalyzer2012_u6</groupId> <artifactId>IKAnalyzer2012_u6</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/IKAnalyzer2012_u6.jar</systemPath> </dependency>
当然了,这是一个费时费力的工作,基本上通过jar包判断:
a)通过winrar,判断其包名
b)通过jar名,判断其版本号,或者通过winrar找开META-INF找相关信息。
c)然后通过http://www.mvnrepository.com/ 来找相关的依赖对象。
奉献代码:pom.rar
2)支持Postgresql
同样也是一个费力的工作,主要工作内容如下:
a)修改com.antcms.core.setup.SetupServlet.java,增加两种类型的数据库。(因jspxcms版权限制暂时不提供代码哈!)
b)修改页面前端webapp\setup\database.jsp,增加postgresql数据库。(呵呵)
//========================艰苦的工作开始=====================
c)修改SQL,使其能够在postgresql上能够正常使用。操作方法是先生成Mysql5的数据库,然后通过PowerDesiger逆向生成物理模型,然后转换为Postgresql数据库;最后生成Postgresql数据库创建脚本。
在这里有几个点要注意。
c1)Postgresql支持Boolean类型,Mysql不支持,所以应该把所有的包含有is而且是char(1)类型统统修改为BOOL类型,包括其默认值(default Value),如果原来是1则为true,如果是0则为false。
c2)insert Data的sql语句,按照Postgresql语句进行规范,去掉单引号之类的。
c3)因为类型的变化,把所有DAO层所有Hiberante的boolean类型,传值由原来的0或者1,修改为false或者true;
c4)把所有Model层里包含有@Lob的字段,加上@org.hibernate.annotations.Type(type="org.hibernate.type.StringClobType"),比如:
@Lob @org.hibernate.annotations.Type(type="org.hibernate.type.StringClobType")
如果不加,会把Text或者clob对象先转换成long对象而报错。
//========================艰苦的工作结束=====================
奉献代码:postgresql.rar
3)简述下安装原理
安装前使用webapp\setup\file\setup_web.xml,安装完成后,程序会把webapp\setup\file\web.xml复制到项目下,重新启动后就以新的web.xml进行加载。安装要做的事情有三个。
a)选择数据库,配置数据库信息,生成数据库。
b)根据数据库配置信息生成custom.properties,复制到项目conf下面.
c)上面成功执行后,复制web.xml到项目下。
说下Jspxcms的缺点。
1)首当其冲的是浪费资源严重,所谓的性能测试基本是在测中间件服务器、数据库服务器和硬件的性能,如果你是程序员,你懂得。
2)没有SEO意识,只是做个形象工程,专业的网站扩展性还要定制很多。
3)慵懒的发展路线,太强势的商业意识,可能让JSPXCMS迷失方向,哈哈,这行需要修正。
3)太少的模板,应该向wordPress看齐;不支持移动终端的显示等等。
不过,最终感谢PONY-Jspxcms的大佬给我们奉献了他们的代码,让我们学习到了很多。