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 架构解析 ##### 1.1 Portal规范 Liferay Portal遵循了两种主要的门户规范:JSR 168 和 WSRP (Web Services for Remote Portlets)。JSR 168是一个Java...
**Liferay Portal 开发大全** Liferay Portal 是一个开源的企业级门户平台,广泛用于构建复杂的Web应用程序和企业内部协作系统。它提供了丰富的功能,包括内容管理、社交媒体集成、工作流支持以及用户界面定制。本...
同时,通过调试和修改代码,加深对Liferay Portal开发流程的理解。这些实例不仅有助于提升你的编程技能,还能让你熟悉Liferay的生态系统,包括其API、服务、工具和最佳实践。在实践中,你还可以尝试将这些实例与其他...
本文档旨在指导开发者如何进行 Portlet 的开发并部署在 Liferay Portal 上。 #### 二、Portlet 开发与 Servlet 开发对比 1. **Portlet 开发**: - **标准性**:遵循 JSR-168 规范,使得 Portlet 可以跨平台部署。...
### Liferay Portal 6 使用文档知识点详述 #### 一、Liferay Portal 6:企业级门户解决方案 Liferay Portal 6是一款先进的企业级门户平台,旨在帮助企业构建和维护高效、安全、用户友好的内部网(Intranets)。它...
- **Portal规范**:Liferay Portal遵循业界标准,如JSR168和WSRP,确保了与其他系统的互操作性和可扩展性。 - **JSR168**:Java Specification Request 168定义了portlet API,使得portlet可以在不同的portal...
4. 技术集成:Liferay支持与多种技术的集成,这意味着它可以作为企业级应用的中心平台,整合广告、搜索引擎优化、BPM等多个方面,以满足复杂的业务需求。 5. 开源社区贡献:Jonas X. Yuan作为开源社区的贡献者,...
Liferay Portal 提供了一个高度可定制化的框架,允许开发者根据业务需求进行扩展和二次开发。 #### 二、Liferay Portal 架构解析 ##### 第一节 Portal 规范 - **JSR 168**: 这是Java Portlet API的一个版本,定义...
通过以上详尽步骤,开发者可以逐步构建出一个功能完善的Liferay Portal开发环境,为后续的源代码研究、定制开发以及功能测试提供了坚实的基础。这一过程虽然繁琐,但却是掌握Liferay核心技术、实现个性化企业门户...
【Liferay Portal 内容管理】是企业级门户平台Liferay Portal的重要组成部分,它提供了丰富的文档管理和信息发布功能,便于组织内部的信息共享与协作。 在Liferay Portal中,文档管理主要通过【Document Library】...
Using Liferay Portal 6.1
1. **单点登录(Single Sign-On, SSO)**:Liferay Portal支持多种安全技术,如ACL(Access Control Lists)、SSL(Secure Socket Layer)和LDAP(Lightweight Directory Access Protocol),实现用户只需登录一次...
"Liferay Portal 6.1 源码导入到 Eclipse" Liferay Portal 是一个基于 Java 的开源门户平台,提供了丰富的功能和插件,可以满足企业级门户网站的需求。将 Liferay Portal 6.1 源码导入到 Eclipse,以便更好地理解和...
Liferay Portal Liferay IDE
本次研究由 Liferay 工程团队执行,旨在通过一系列用例(包括基础设施门户、协作和内容管理)进行密集调优和测试,以展示 Liferay Portal EE 的可扩展性。 该研究的目标是: - 确定单个物理服务器在定义的测试案例...
如果你已经下载了源代码,那么你可能在研究代码结构,了解其工作原理,或者准备进行自定义开发。 在解决问题时,查看Liferay的官方文档、社区论坛和博客(如给出的链接)是非常有用的。Liferay社区活跃,许多问题...
总的来说,Liferay Portal 6.1.1的源码部署需要对Eclipse、Java、Ant和数据库有一定的了解。遵循上述步骤,即使初学者也能顺利地在Eclipse中搭建起Liferay的开发环境,从而开始探索和定制Liferay Portal的无限可能性...
标题 "liferay-portal-sql-6.1.1-ce-ga2-20120731132656558" 暗示了这是一个关于Liferay Portal 6.1.1社区版(CE GA2)的SQL相关资源,发布日期为2012年7月31日。Liferay Portal是一个开源的企业级内容管理平台,它...