`
esffor
  • 浏览: 1371577 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Liferay Portal额外研究(二):对Liferay进行瘦身

阅读更多
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 Portal额外研究

    【Liferay Portal额外研究】 Liferay Portal是一款开源的企业级门户平台,它提供了丰富的功能和高度的可定制性,用于构建企业内部或外部的网站、工作流应用和协作平台。在这个额外研究中,我们将探讨如何在新的...

    Liferay Portal 二次开发指南

    ### Liferay Portal 二次开发指南 #### 一、Liferay Portal 架构解析 ##### 1.1 Portal规范 Liferay Portal遵循了两种主要的门户规范:JSR 168 和 WSRP (Web Services for Remote Portlets)。JSR 168是一个Java...

    liferay portal开发大全

    **Liferay Portal 开发大全** Liferay Portal 是一个开源的企业级门户平台,广泛用于构建复杂的Web应用程序和企业内部协作系统。它提供了丰富的功能,包括内容管理、社交媒体集成、工作流支持以及用户界面定制。本...

    liferay portal 开发实例

    同时,通过调试和修改代码,加深对Liferay Portal开发流程的理解。这些实例不仅有助于提升你的编程技能,还能让你熟悉Liferay的生态系统,包括其API、服务、工具和最佳实践。在实践中,你还可以尝试将这些实例与其他...

    liferay portal 开发指南

    本文档旨在指导开发者如何进行 Portlet 的开发并部署在 Liferay Portal 上。 #### 二、Portlet 开发与 Servlet 开发对比 1. **Portlet 开发**: - **标准性**:遵循 JSR-168 规范,使得 Portlet 可以跨平台部署。...

    liferay portal 6 使用文档

    ### Liferay Portal 6 使用文档知识点详述 #### 一、Liferay Portal 6:企业级门户解决方案 Liferay Portal 6是一款先进的企业级门户平台,旨在帮助企业构建和维护高效、安全、用户友好的内部网(Intranets)。它...

    Liferay Portal文档

    - **Portal规范**:Liferay Portal遵循业界标准,如JSR168和WSRP,确保了与其他系统的互操作性和可扩展性。 - **JSR168**:Java Specification Request 168定义了portlet API,使得portlet可以在不同的portal...

    Liferay Portal Systems Development

    4. 技术集成:Liferay支持与多种技术的集成,这意味着它可以作为企业级应用的中心平台,整合广告、搜索引擎优化、BPM等多个方面,以满足复杂的业务需求。 5. 开源社区贡献:Jonas X. Yuan作为开源社区的贡献者,...

    liferay+Portal+二次开发指南

    Liferay Portal 提供了一个高度可定制化的框架,允许开发者根据业务需求进行扩展和二次开发。 #### 二、Liferay Portal 架构解析 ##### 第一节 Portal 规范 - **JSR 168**: 这是Java Portlet API的一个版本,定义...

    搭建liferay portal的开发环境.doc

    通过以上详尽步骤,开发者可以逐步构建出一个功能完善的Liferay Portal开发环境,为后续的源代码研究、定制开发以及功能测试提供了坚实的基础。这一过程虽然繁琐,但却是掌握Liferay核心技术、实现个性化企业门户...

    Liferay Portal 内容管理

    【Liferay Portal 内容管理】是企业级门户平台Liferay Portal的重要组成部分,它提供了丰富的文档管理和信息发布功能,便于组织内部的信息共享与协作。 在Liferay Portal中,文档管理主要通过【Document Library】...

    Using Liferay Portal 6.1

    Using Liferay Portal 6.1

    liferay_Portal的安装与简单应用.docx

    1. **单点登录(Single Sign-On, SSO)**:Liferay Portal支持多种安全技术,如ACL(Access Control Lists)、SSL(Secure Socket Layer)和LDAP(Lightweight Directory Access Protocol),实现用户只需登录一次...

    Liferay Portal Liferay IDE

    Liferay Portal Liferay IDE

    Liferay Portal performance

    本次研究由 Liferay 工程团队执行,旨在通过一系列用例(包括基础设施门户、协作和内容管理)进行密集调优和测试,以展示 Liferay Portal EE 的可扩展性。 该研究的目标是: - 确定单个物理服务器在定义的测试案例...

    liferay Portal 求助

    如果你已经下载了源代码,那么你可能在研究代码结构,了解其工作原理,或者准备进行自定义开发。 在解决问题时,查看Liferay的官方文档、社区论坛和博客(如给出的链接)是非常有用的。Liferay社区活跃,许多问题...

    Liferay_Portal_6[1].1源码部署

    总的来说,Liferay Portal 6.1.1的源码部署需要对Eclipse、Java、Ant和数据库有一定的了解。遵循上述步骤,即使初学者也能顺利地在Eclipse中搭建起Liferay的开发环境,从而开始探索和定制Liferay Portal的无限可能性...

    liferay-portal-sql-6.1.1-ce-ga2-20120731132656558

    标题 "liferay-portal-sql-6.1.1-ce-ga2-20120731132656558" 暗示了这是一个关于Liferay Portal 6.1.1社区版(CE GA2)的SQL相关资源,发布日期为2012年7月31日。Liferay Portal是一个开源的企业级内容管理平台,它...

    liferay-portal详解

    本文档将从架构解析、portal 规范、portlet 容器、portlet 生命周期、liferay portal 工作原理等方面对 Liferay Portal 进行详细介绍。 第一部分:Liferay Portal 架构解析 Liferay Portal 的架构主要由三个部分...

Global site tag (gtag.js) - Google Analytics