对Liferay进行瘦身

原文引用自:http://blog.csdn.net/wzlas111/article/details/5839821

 

Liferay的体系是很庞杂的,居然有些文章对外宣称Liferay是微内核,我想写这文章的哥们没有搞清楚什么是“微内核”。
         Liferay 受其企业版本影响不小,毕竟Liferay公司主要还是“企业行为”,而不是一个单纯的一个“开源团体”行为。所以Liferay Portal本身内嵌了大量的Portlet,而且这些Portlet和Liferay Portal Framework甚至还有些交融。这就是为什么liferay portal-ejb.jar会有3M多。  

       虽然我们可以通过修改system.properties,portlet.properties,protal-spring这些基础配置文件来修改声 明哪些服务不需要加载,也可以通过修改 WEB-INF目录下的portlet.xml,liferay-portlet.xml以及liferay-display.xml这些文件来删除一些 不需要的portlet。  

 

       但是,我想真正敢真么干的,估计很少。这是为什么呢,就是应为Liferay内部实现的结构和代码,并不是非常良好。而对于这一块的优化,也没有很详细的 帮助使用手册。在Liferay的网站上,只有一些教开发人员如何部署在不同服务器和数据库,如何新增一些portlet和theme,以及如何修改权限 方面的浅显参考手册。

         接下来就讲一讲对Liferay的瘦身操作,让Liferay变成一个只提供最基本的Portal框架和部署机制的portal context,而去掉那些多余的portlet。—— 因为这些多余的portlet大多国内的项目没有任何利用价值,但是如果需要部署的话,则会大大影响系统响应性能,而且让开发也变得比较麻烦。

         当然,是否按照我今天说的方式对Liferay进行瘦身,这全凭习惯。有些朋友不愿改变Liferay的结构,只希望单纯通过配置来加载,也是可以的。

  (1)保留Liferay最基本的一些组件   

       Liferay提供了一些基本组件,这些组件不属于Portal框架之内,但是整个portal服务是基于这些组件。

包结构

说明

com.liferay.counter

主要提供主建操作服务, Liferay 内部的提供的组织结构表维护,就是采用 counter 提供的主建自增机制

com.liferay.filters

提供一些基础的基于 servlet filter 的过滤器

com.liferay.taglib

提供最基本的 web 展示标签

com.liferay.util

提供最基本的一些公共组件

       以上这四个组件是必须保留的,另外还有两个基本组件:com.liferay.mail(提供邮件服务)和com.liferay.wsrp(提供webservice服务)。这个实际上应该属于可选的,如果觉得需要的话,也可以纳入。

(2)保留Liferay的Portal基础服务

       Liferay的基础服务是以com.liferay.portal作为基础的,基本属于此包内的都尽量保留。目前其子package说明如下:


 

包结构

说明

com.liferay.portal

此包下放置了 portal 服务相关的一些异常

com.liferay.portal.action

负责一些 struts action 处理,比如 Login 

com.liferay.portal.definitions

此包不是类包,而是负责放置一些定义相关的 dtd 文件资源。具体需要哪些 dtd ,可以参考 com.liferay.portal.util. EntityResolver 

com.liferay.portal.dependencies

此包也不是类包,而是负责一些依赖性的资源文件。

com.liferay.portal.deploy

负责自动部署和热部署

com.liferay.portal.events

这个包内主要是一些行为处理类

com.liferay.portal.im

即时消息的支持

com.liferay.portal.jcr

提供 JSR-170 JCR 的支持,并内部提供 Jackrabbit 的实现支持

com.liferay.portal.job

对一些时间调度性 Job 的支持

com.liferay.portal.language

对语言的支持包

com.liferay.portal.lucene

对全文检索的支持

com.liferay.portal.model

一些模型对象的集合

com.liferay.portal.security

 

com.liferay.portal.servlet

 

com.liferay.portal.spring

 

com.liferay.portal.struts

 

com.liferay.portal.theme

提供对“主题”,也就是界面风格的支持

com.liferay.portal.tools

 

com.liferay.portal.util

 

com.liferay.portal.velocity

 

com.liferay.portal.wsrp

 

 

       其实我们可以把 Liferay 这些 portal 服务再缩简一些,但刚开始建议大家不要随便的删减,保留原始的即可。

 

 3 )缩减 portlet 应用

       Liferay 提供了大量的 portlet 应用,有大概七八十个。正应为这些 portlet 的加载和部署,让 Liferay 启动缓慢,消耗系统资源多。实际上,保持 Liferay Portal 正常运行,只需要其中几个就可以了,剩下的,我们可以根据需要进行删减。

 

       下面列出了一些最基本的 portlet ,只需要保留如下的这些 portlet 即可保证 liferay 的正常启动和运行

包结构

说明

com.liferay.portlet

Liferay Portlet 的一些基础类

com.liferay.portlet.admin

管理 portlet

com.liferay.portlet.calendar

日期 portlet 虽然可以不需要,但是其内部提供对 job 的调度。

com.liferay.portlet.communities

这个是负责配置用户其所在的 group ,利用可以配置用户所拥有的工作区。

com.liferay.portlet.enterpriseadmin

 

com.liferay.portlet.language

 

com.liferay.portlet.layoutconfiguration

 

com.liferay.portlet.login

 

com.liferay.portlet.myaccount

用于配置用户信息

com.liferay.portlet.myplaces

用于控制用户的工作区选择

com.liferay.portlet.portletconfiguration

 

com.liferay.portlet.themegallery

用于控制主题风格

com.liferay.portlet.translator

这个包必须要,虽然 portlet 可以不用,但是被portal.language 包引入了

com.liferay.portlet.wsrp

这个包必须要。

 

       只需要保证如上的 portlet 在系统中,即可保证 Liferay 的正常运行。

 

       但是,不以为只需要简单得讲起他的 Porlet 删除即可,那就大错特错了。 Liferay 在这一层面做的非常不友善,内部代码由一点点地耦合。很多地方依靠写 if else 来判断,所以造成了在 portal 这个服务包中,竟然存在很多地方引用 portlet 中的类。

       不过这个倒不难修改,只需要花费一点点时间,简单修改一下就可以了。比较容易,此处就不多说。

 

 4 )从配置文件中删除无用 portlet 的部署

      

       这个主要是修改 WEB-INF 目录下的 portlet.xml  liferay-portlet.xml 以及 liferay-display.xml 这些文件。只需要依次把那些不需要的 portlet 删除即可。没有什么难度,细心点就可以了。

 

 5 )修改服务配置文件

 

       Liferay 的配置文件也是很多,放置也是在好几个地方:

位置

配置文件说明

/WEB-INF

portlet 描述和 struts 等配置文件

/WEB-INF/classes

system.properties  portal.properties 配置文件

/WEB-INF/classes/META-INF

portal-spring.xml  portal-hbm.xml  portal-log4j.xml 配置文件。此位置可调,具体可以修改 portal.properties 内容。

 

       为了让系统正确运行,我们还需要修改 system.properties  portal.properties 配置文件,这是 Liferay 核心配置文件。Liferay 的很多服务都是在此配置文件中声明和修改。具体修改哪些本文不细说,改篇专门作个专题讲。

 

       还需要修改 portal-spring.xml (如果是 professional 版,则是 portal-spring-professional.xml )。需要将那些已经没有的类 bean 删除。否则 Liferay 现在的加载机制,一旦碰到没有的类的 bean ,则加载不成功了。

       当然 portal-hbm.xml 也是需要修改的,去掉那些不需要的类即可。

 

       基本上经过以上五个步骤, Liferay 即可完成手身了。在真实系统研发过程中,不一定非要选择这样的瘦身方式,毕竟这种方式,对后续 Liferay 版本的维护带来一定的工作量。—— 但是,如果这么尝试一把,则可以在通过调试过程中,对 Liferay 的配置体系和代码结构体系有个较为清晰的认识 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值