原文引用自: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 Ext允许开发者在不修改核心代码的情况下对Liferay进行高级定制,这包括添加新的portlet、服务、主题以及系统级别的配置。 描述中提到的链接指向了一篇博客文章,虽然内容未提供,但通常这类资源会包含有关...
Liferay Portal Liferay IDE
"plugins开发指南8-Ext Plugin.pdf"介绍了EXT插件,它允许开发者对Liferay的核心功能进行修改,而不影响其他插件或升级。 Struts2是一个流行的MVC框架,"plugins开发指南12-liferay6中struts2开发.pdf"将介绍如何在...
4. **权限和角色**:Liferay有强大的权限系统,可以精确控制不同用户组对内容和功能的访问。 5. **国际化和多语言支持**:Liferay支持多种语言,对于跨国企业尤其重要。 6. **服务和API**:Liferay提供大量的服务...
- **用户管理:**Liferay提供了全面的用户管理工具,包括用户账户创建、权限分配等功能,便于组织对访问者和内部员工进行有效管理。 - **主题更换:**通过Liferay的外观管理功能,用户能够自定义网站的主题和布局,...
本文将围绕“Liferay相关的代码”这一主题,深入探讨Liferay的源码、工具以及如何利用这些资源进行开发。 首先,源码是理解任何软件系统核心的钥匙。对于Liferay,查看其源码可以帮助开发者了解其内部工作原理,...
- Liferay的开发流程中大量依赖于Ant工具进行构建管理。在Liferay IDE中,可以通过 `Ant` 面板来管理构建过程。 - 在 `Servers` 标签页中选中Liferay服务器,右键选择 `Add and Remove`,然后选中要部署的portlet...
这本书适合对Liferay有初步了解并希望进一步深入研究的技术人员。 《Liferay User Interface Development》关注的是Liferay的用户界面设计与实现,涵盖主题定制、JavaScript API的使用、响应式设计等内容,帮助...
- **支持的技术框架**:Liferay 内置了对多种开发框架的支持,如 Spring、Struts 和 JSF,使得开发者可以根据需求选择合适的框架进行开发。 #### 1-3 节 扩展和自定义 Liferay Liferay 允许开发者通过以下方式...
以下是对这8本Liferay经典书籍的知识点总结,旨在帮助读者深入理解并掌握Liferay的核心技术和应用场景。 1. 《Liferay Portal 7.x Development》 这本书详细介绍了Liferay Portal 7.x的开发过程,涵盖了portlet开发...
Liferay入门帮助文档是针对Liferay开发的一份指南,它主要涵盖了如何开始使用这个全面的门户解决...随着对Liferay的深入学习,开发者将能够充分利用其强大的功能,构建出满足各种业务需求的高效、可扩展的门户应用。
然后在Liferay门户中添加并配置portlet,进行功能测试。 6. **report-form-portlet**:这个文件可能是例子中的一个portlet,可能包含了一个报告或表单的展示和处理。它展示了如何在Liferay中创建一个基于Struts的...
再者,《Liferay+in+Action》是一本实践导向的书籍,它通过实例展示了在实际项目中如何运用Liferay进行开发。书中可能涵盖了一些高级话题,如工作流定制、社交网络集成、移动应用开发等,旨在提升开发者解决实际问题...
安装 Liferay Portal 需要按照官方文档进行配置和部署,确保满足最低系统要求。 ##### 2.2 Liferay Portal 的用户策略 - **定义用户**:用户是 Liferay 中的基本身份单位,可以定义用户名、密码等信息。 - **添加...
2. **《liferay_4_installation_guide.pdf》** - 提供了详细的Liferay Portal安装和部署步骤,涵盖不同操作系统和服务器环境下的配置,包括JVM参数设定、数据库连接等,对初次接触Liferay的用户非常有帮助。...
最后,理解Liferay的工作流系统和内容管理系统的使用,以及如何与其他企业系统进行集成。 五、实战项目 通过实际的项目开发,你可以更好地理解和运用Liferay。例如,创建一个新闻发布portlet,实现发布、分类、搜索...
- 它提供了工作流支持,可以对内容进行审核和版本控制。 5. **社交协作**: - Liferay 包含了社交网络功能,如个人资料、好友系统、讨论论坛和即时消息。 - 社区和工作团队的建立方便了成员之间的协作和信息共享...
Liferay中的AUI框架,官方叫做Alloy,是一...准确来说AUI是Liferay在YUI的基础上进行的Liferay扩展,以方便Liferay的一些实际应用和扩展。AUI的很多语法结构、使用方法都都和YUI相关不太多。熟悉YUI的能够快速熟悉AUI。
通过学习,开发者可以实现对Liferay界面的个性化设计,以满足不同用户和组织的需求。 文档四:《Liferay Plugin SDK Developer's Guide》 Liferay Plugin SDK是开发Liferay插件的工具包。这份文档详述了如何使用SDK...