`

对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 的配置体系和代码结构体系有个较为清晰的认识 。

分享到:
评论

相关推荐

    liferay扩展环境 liferay ext

    Liferay Ext允许开发者在不修改核心代码的情况下对Liferay进行高级定制,这包括添加新的portlet、服务、主题以及系统级别的配置。 描述中提到的链接指向了一篇博客文章,虽然内容未提供,但通常这类资源会包含有关...

    Liferay Portal Liferay IDE

    Liferay Portal Liferay IDE

    Liferay 6 入门教程

    "plugins开发指南8-Ext Plugin.pdf"介绍了EXT插件,它允许开发者对Liferay的核心功能进行修改,而不影响其他插件或升级。 Struts2是一个流行的MVC框架,"plugins开发指南12-liferay6中struts2开发.pdf"将介绍如何在...

    liferay详细讲解 liferay项目完全讲解

    4. **权限和角色**:Liferay有强大的权限系统,可以精确控制不同用户组对内容和功能的访问。 5. **国际化和多语言支持**:Liferay支持多种语言,对于跨国企业尤其重要。 6. **服务和API**:Liferay提供大量的服务...

    liferay快速入门quickstart

    - **用户管理:**Liferay提供了全面的用户管理工具,包括用户账户创建、权限分配等功能,便于组织对访问者和内部员工进行有效管理。 - **主题更换:**通过Liferay的外观管理功能,用户能够自定义网站的主题和布局,...

    liferay相关的代码

    本文将围绕“Liferay相关的代码”这一主题,深入探讨Liferay的源码、工具以及如何利用这些资源进行开发。 首先,源码是理解任何软件系统核心的钥匙。对于Liferay,查看其源码可以帮助开发者了解其内部工作原理,...

    liferay环境的搭建

    - Liferay的开发流程中大量依赖于Ant工具进行构建管理。在Liferay IDE中,可以通过 `Ant` 面板来管理构建过程。 - 在 `Servers` 标签页中选中Liferay服务器,右键选择 `Add and Remove`,然后选中要部署的portlet...

    Liferay合集.zip

    这本书适合对Liferay有初步了解并希望进一步深入研究的技术人员。 《Liferay User Interface Development》关注的是Liferay的用户界面设计与实现,涵盖主题定制、JavaScript API的使用、响应式设计等内容,帮助...

    Liferay6.0开发指南

    Liferay是一款功能强大且设计优秀的开源门户系统,其版本6.0尤其在多个方面进行了优化和完善,为开发者提供了更加友好和高效的工作环境。本指南旨在帮助开发者了解Liferay 6.0的核心特性和开发流程,通过详细的讲解...

    liferay6.2开发指南.pdf

    - **支持的技术框架**:Liferay 内置了对多种开发框架的支持,如 Spring、Struts 和 JSF,使得开发者可以根据需求选择合适的框架进行开发。 #### 1-3 节 扩展和自定义 Liferay Liferay 允许开发者通过以下方式...

    liferay6.06

    通过创建新的Liferay Project,使用Build Service生成CRUD操作,然后添加Struts2 Portlet应用,进行业务逻辑开发。 10. 配置Struts2 Portlet参数: Struts2 Portlet需要特定的配置,包括portlet.xml、struts.xml等...

    liferay经典书籍8本

    以下是对这8本Liferay经典书籍的知识点总结,旨在帮助读者深入理解并掌握Liferay的核心技术和应用场景。 1. 《Liferay Portal 7.x Development》 这本书详细介绍了Liferay Portal 7.x的开发过程,涵盖了portlet开发...

    Liferay入门帮助文档(Liferay开发指南)

    Liferay入门帮助文档是针对Liferay开发的一份指南,它主要涵盖了如何开始使用这个全面的门户解决...随着对Liferay的深入学习,开发者将能够充分利用其强大的功能,构建出满足各种业务需求的高效、可扩展的门户应用。

    liferay 整合struts例子

    然后在Liferay门户中添加并配置portlet,进行功能测试。 6. **report-form-portlet**:这个文件可能是例子中的一个portlet,可能包含了一个报告或表单的展示和处理。它展示了如何在Liferay中创建一个基于Struts的...

    LIferay6开发书籍

    再者,《Liferay+in+Action》是一本实践导向的书籍,它通过实例展示了在实际项目中如何运用Liferay进行开发。书中可能涵盖了一些高级话题,如工作流定制、社交网络集成、移动应用开发等,旨在提升开发者解决实际问题...

    liferay

    安装 Liferay Portal 需要按照官方文档进行配置和部署,确保满足最低系统要求。 ##### 2.2 Liferay Portal 的用户策略 - **定义用户**:用户是 Liferay 中的基本身份单位,可以定义用户名、密码等信息。 - **添加...

    liferay开发文档集合

    2. **《liferay_4_installation_guide.pdf》** - 提供了详细的Liferay Portal安装和部署步骤,涵盖不同操作系统和服务器环境下的配置,包括JVM参数设定、数据库连接等,对初次接触Liferay的用户非常有帮助。...

    liferay 超级学习文档

    最后,理解Liferay的工作流系统和内容管理系统的使用,以及如何与其他企业系统进行集成。 五、实战项目 通过实际的项目开发,你可以更好地理解和运用Liferay。例如,创建一个新闻发布portlet,实现发布、分类、搜索...

    liferay 资料

    - 它提供了工作流支持,可以对内容进行审核和版本控制。 5. **社交协作**: - Liferay 包含了社交网络功能,如个人资料、好友系统、讨论论坛和即时消息。 - 社区和工作团队的建立方便了成员之间的协作和信息共享...

    Liferay的AUI框架

    Liferay中的AUI框架,官方叫做Alloy,是一...准确来说AUI是Liferay在YUI的基础上进行的Liferay扩展,以方便Liferay的一些实际应用和扩展。AUI的很多语法结构、使用方法都都和YUI相关不太多。熟悉YUI的能够快速熟悉AUI。

Global site tag (gtag.js) - Google Analytics