Liferay7 BPM门户开发之37: Liferay7下的OSGi Hook集成开发
2016-11-14 18:36
477 查看
hook开发是Liferay客制扩展的一种方式,比插件灵活,即可以扩展liferay门户,也能对原有特性进行更改,Liferay有许多内置的服务,比如用hook甚至可以覆盖Liferay服务。
可作为系统服务挂钩(Liferay Service Hook),还有其他类型的hook...
Liferay6.2 时的hook开发比较有限,而在Liferay7则大为不同,OSGi services的彻底改进至Liferay的底层模型框架,使得Liferay可以支持更多的定制扩展!
OSGi plugins可以快速部署到Liferay,就和其他类型的插件一样。
名词:
FQPN: a fully qualified portlet name
正在不断整理完善中...
集成点:"javax.portlet.name" : a FQPN
用途: 轮训消息机制,用于类似Ajax在页面显示信息
例子:
JS:
View Code
===================
javax.portlet.filter.EventFilter
javax.portlet.filter.RenderFilter
javax.portlet.filter.ResourceFilter
集成点:"javax.portlet.name" : a FQPN
例子:
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
com.liferay.portlet.social.model.SocialRequestInterpreter
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
集成点:"javax.portlet.name" : a FQPN
用途: 配置动作扩展
例子:https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/implementing-configuration-actions
===================
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portlet.dynamicdatamapping.util.DDMDisplay
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.portlet.FriendlyURLMapper
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.search.Indexer
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.search.OpenSearch
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.security.permission.PermissionPropagator
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.pop.MessageListener
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.lar.PortletDataHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.portlet.PortletLayoutListener
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
javax.portlet.PreferencesValidator
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.lar.StagedModelDataHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.template.TemplateHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.trash.TrashHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.servlet.URLEncoder
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.notifications.UserNotificationHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.webdav.WebDAVStorage
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.workflow.WorkflowHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.xmlrpc.Method
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
com.liferay.portal.kernel.events.LifecycleAction
集成点:
用途:
例子:
===================
com.liferay.portal.kernel.search.IndexerPostProcessor
集成点: "indexer.class.name" : a indexer or entity class name
用途:
例子:
===================
com.liferay.portal.service.ServiceWrapper
集成点:
用途:
例子:
待续...
可作为系统服务挂钩(Liferay Service Hook),还有其他类型的hook...
Liferay6.2 时的hook开发比较有限,而在Liferay7则大为不同,OSGi services的彻底改进至Liferay的底层模型框架,使得Liferay可以支持更多的定制扩展!
OSGi plugins可以快速部署到Liferay,就和其他类型的插件一样。
名词:
FQPN: a fully qualified portlet name
正在不断整理完善中...
PollerProcessor
com.liferay.portal.kernel.poller.PollerProcessor集成点:"javax.portlet.name" : a FQPN
用途: 轮训消息机制,用于类似Ajax在页面显示信息
例子:
JS:
@Component( immediate = true, property = { "javax.portlet.name=com_liferay_blade_samples_portlet_actioncommand_GreeterPortlet", "mvc.command.name=greet" }, service = MVCActionCommand.class ) public class GreeterActionCommand implements MVCActionCommand { @Override public boolean processAction( ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException { _handleActionCommand(actionRequest); return true; } private void _handleActionCommand(ActionRequest actionRequest) { String name = ParamUtil.get(actionRequest, "name", StringPool.BLANK); if (_log.isInfoEnabled()) { _log.info("Hello " + name); } String greetingMessage = "Hello " + name + "! Welcome to OSGi"; actionRequest.setAttribute("GREETER_MESSAGE", greetingMessage); SessionMessages.add(actionRequest, "greetingMessage", greetingMessage); } private static final Log _log = LogFactoryUtil.getLog( GreeterActionCommand.class); }
View Code
===================
Filter
javax.portlet.filter.ActionFilterjavax.portlet.filter.EventFilter
javax.portlet.filter.RenderFilter
javax.portlet.filter.ResourceFilter
集成点:"javax.portlet.name" : a FQPN
例子:
Liferay7 BPM门户开发之36: 使用Portlet filters过滤器做切面AOP
===================Social
com.liferay.portlet.social.model.SocialActivityInterpreter集成点:"javax.portlet.name" : a FQPN
用途:
例子:
com.liferay.portlet.social.model.SocialRequestInterpreter
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
AssetRendererFactory
com.liferay.portlet.asset.model.AssetRendererFactory集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
AtomCollectionAdapter
com.liferay.portal.kernel.atom.AtomCollectionAdapter<?>集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
ConfigurationAction
com.liferay.portal.kernel.portlet.ConfigurationAction集成点:"javax.portlet.name" : a FQPN
用途: 配置动作扩展
例子:https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/implementing-configuration-actions
===================
ControlPanelEntry
com.liferay.portlet.ControlPanelEntry集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
CustomAttributesDisplay
com.liferay.portlet.expando.model.CustomAttributesDisplay集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portlet.dynamicdatamapping.util.DDMDisplay
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.portlet.FriendlyURLMapper
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.search.Indexer
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.search.OpenSearch
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.security.permission.PermissionPropagator
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.pop.MessageListener
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.lar.PortletDataHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.portlet.PortletLayoutListener
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
javax.portlet.PreferencesValidator
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.lar.StagedModelDataHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.template.TemplateHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.trash.TrashHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.servlet.URLEncoder
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.notifications.UserNotificationHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.webdav.WebDAVStorage
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.workflow.WorkflowHandler
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.xmlrpc.Method
集成点:"javax.portlet.name" : a FQPN
用途:
例子:
===================
com.liferay.portal.kernel.events.LifecycleAction
集成点:
用途:
例子:
===================
com.liferay.portal.kernel.search.IndexerPostProcessor
集成点: "indexer.class.name" : a indexer or entity class name
用途:
例子:
===================
com.liferay.portal.service.ServiceWrapper
集成点:
用途:
例子:
待续...
相关文章推荐
- Liferay7 BPM门户开发之26: 集成Activiti到Liferay7
- Liferay7 BPM门户开发之12:acitiviti和liferay用户权限体系集成
- Liferay7 BPM门户开发之45: 集成Activiti文件上传部署流程BPMN模型
- Liferay7 BPM门户开发之16: Liferay中用户\站点\组织架构\角色\用户组以及关联关系
- Liferay7 BPM门户开发之44: 集成Activiti展示流程列表
- Liferay7 BPM门户开发之47: 集成Activiti待办已办任务清单和流程启动
- Liferay7 BPM门户开发之38: OSGi模块化Bndtools、Maven、Gradle开发构建入门
- Liferay7 BPM门户开发之42: Liferay核心JSP定制扩展
- Liferay7 BPM门户开发之35: AssetTag的集成查询
- Liferay7 BPM门户开发之46: 集成Activiti用户、用户组、成员关系同步
- Liferay7 BPM门户开发之30: 通用帮助类Validator、ArrayUtil、StringUtil等使用
- Liferay7 BPM门户开发之29: 核心kernel.util包下面的通用帮助类ParamUtil、GetterUtil使用
- Liferay7 BPM门户开发之9: 流程表单数据动态映射体系
- Liferay7 BPM门户开发之17: Portlet 生命周期
- Liferay7 BPM门户开发之21: 理解消息总线(Message Bus)体系
- Liferay7 BPM门户开发之14: 通用流程实现从Servlet到Portlet (Part3)
- Liferay7 BPM门户开发之8: Activiti实用问题集合
- Liferay7 BPM门户开发之19: 理解Service Builder体系
- Liferay7 BPM门户开发之6: Activiti数据库换为mysql
- Liferay7 BPM门户开发之1:Liferay7开发环境准备