前几天Liferay正式发布了5.2, 抽空Down下来研究了一天,感觉还是有不少变化的,很多底层的东西都发生了变化。因为现在重点关注于MDD的研究,所以这次研究重点在基础架构(liferay infrastructure)方面,其他方面略有涉及,简单总结如下:http://www.smilingleo.cn原创,转载请标明出处。
一、环境变动
- 将更多的配置内容放到了portal.properties中,比如JDBC连接。
- Spring升级到了2.5, 大量采用了AOP, 比如将原来的liferayDataSource, liferayTransactionManager等等都用transactionAdvice代替;
- 简化了portal-spring.xml的配置方式原来采用的.impl, .transaction, 等统一由.impl实现,并且支持Entity不使用liferayDataSource, liferaySessionFactory了。
- 并且除了portal.properties中定义的需要read-only事务的方法之外,其他方法都应该是required的了。
- 另外,不再使用JNDI连接数据源,连接池采用c3p0(这样数据库关闭再打开就不会有无法连接的问题了),并采用区分readDataSource和writeDataSource的方式来增加系统的扩展性(虽然缺省的实现还是相同的一个数据源,但是可以自己扩展了,很棒的一个改进)。
二、 ServiceBuilder相关变动
- 对于Spring事务配置,增加了对只读方法的自定义。可以在portal.properties中定义什么前缀的方法名是read-only事务;
- persistence_impl.ftl
增加了一个BatchSession的手工控制,在portal.properties中定义了一个Session中批量操作的条数(默认是20个),原来的控制应该是交给Hibernate缺省实现的,这里通过BatchSessionCounter等实现了精确控制;
- model_impl.ftl
添加了Expando的支持。
关于Expando, 就是解决所谓动态字段问题的一个技术。这个方案并不真正的修改原来的表,去增加一个字段,而是采用用四个表结构来存储所有其他表的扩展字段及值的一种方法。这四个表是:ExpandoTable, ExpandoColumn, ExpandoValue, ExpandoRow, 共同模拟:表、字段、行、一行中的某字段值。
和Counter等一样,Expando也是以ServiceBuilder自动构建的方式创建的,有自己的模型定义文件,所以使用方式上和其他的Service没有两样。
- service_base_impl.ftl
取消了InitializingBean;使用了Annotation, BeanReference,用来指向某个Spring中的managed bean
三、Web层
- 修改了Search-Container标签,更加容易使用了。
- 使用了CacheFilter, 提高了通讯性能;
四、应用
- 控制面板:将管理相关的Portlet全部放到Control Panel中。
- Journal Portlet 改名为Web Content. Journal Structure的定义行类型时增加了很多选项,可以访问Document Library中的文件,还可以跳转到某一个page.
- 权限管理:由于在5.x中采用了基于角色的权限系统,5.2里面可以在相对集中的界面中对Portal, Portlet给用户或者角色、用户组授权了。(感觉还是达不到实际应用的需求。)
<script type="text/javascript"></script>