(Portal 开发读书笔记) Portlet生命周期

简介:

 Portlet的生命周期由Portlet容器负责, portlet生命周期定义了portlet怎么被加载、实例化、初始化,怎么接受客户端发过来的request,怎么销毁。Portlet生命周期通过portlet接口中的init、 processAction、render 、 destroy几个方法来实现。

 

加载和实例化:

Portlet容器负责加载和实例化Portlet,这个动作发生在Portlet刚被部署的时候,或者某个请求要访问Portlet的时候。Portlet容器的类加载器要与Servlet容器的类加载器一致,并且一旦加载了Portlet的字节码之后就立刻进行实例化动作。

 

初始化:

Portlet容器负责初始化Portlet,这个动作发生在实例化之后,而发生在任何请求访问这个Portlet之前。Portlet容器调用init()方法来进行初始化动作。在其中可以拿到PortletConfig,于是通过PortletConfig接口可以访问定义在portlet.xml中的某些初始化参数和ResourceBundle.并且可以通过PortletContext来访问Portlet的上下文。

 

处理请求:

一旦Portlet被初始化之后,可以用来处理各种请求了,请求从类型看,分为4种:

a. Action Request

这种请求可以用来修改数据库,修改Portlet Preference等信息。

对应的请求处理方法是定义在Portlet接口中的processAction()方法,被Portlet容器调用:

 
 
  1. public abstract void processAction(ActionRequest paramActionRequest, ActionResponse paramActionResponse) 
  2.   throws PortletException, IOException; 

 

b.Event Request

这种请求可以让Portlet之间进行交互和协作.

对应的请求处理方法是定义在EventPortlet接口中的processEvent()方法,被Portlet容器调用:

 
 
  1. public abstract interface EventPortlet 
  2.   public abstract void processEvent(EventRequest paramEventRequest, EventResponse paramEventResponse) 
  3.     throws PortletException, IOException; 

 

c.Render Request

这种请求可以让Portlet展现内容。render的请求是幂等的。(各次请求一样)

对应的请求处理方法是定义在Portlet接口中的render()方法,被Portlet容器调用:

 
 
  1. public abstract void render(RenderRequest paramRenderRequest, RenderResponse paramRenderResponse) 
  2.    throws PortletException, IOException; 

 

d.Resource Request

这种请求可以让Portlet服务资源或者内容片断,

对应的请求处理方法是定义在ResourceServingPortlet中的serveResources()方法,被Portlet容器调用:

 
 
  1. public abstract interface ResourceServingPortlet 
  2.   public abstract void serveResource(ResourceRequest paramResourceRequest, ResourceResponse paramResourceResponse) 
  3.     throws PortletException, IOException; 

 

而GenericServlet这个抽象类它实现了Portlet接口,EventPortlet接口和ResourceServingPortlet接口,所以非常全面,它可以为任何类型的请求提供服务,所以我们的Portlet实现类一般继承自GenericServlet抽象类.

 
 
  1. public abstract class GenericPortlet  
  2.   implements Portlet, PortletConfig, EventPortlet, ResourceServingPortlet  
  3. {  

 

结束服务:

Portlet容器负责取结束某Portlet实例,当其认为这个Portlet实例没有必要再提供服务时。它会调用destroy()方法,而开发者可以在destroy()方法中做一些释放资源和保存必要信息的功能。一旦destory方法被调用,portlet就不能再接受任何请求,而其对应的就会被垃圾回收(不是立刻)。如果容器想重启启动这个portlet,就要重复之前的加载、实例化、初始化过程。





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/847788,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
人工智能 数据可视化 测试技术
AI测试平台自动遍历:低代码也能玩转全链路测试
AI测试平台的自动遍历功能,通过低代码配置实现Web和App的自动化测试。用户只需提供入口链接或安装包及简单配置,即可自动完成页面结构识别、操作验证,并生成可视化报告,大幅提升测试效率,特别适用于高频迭代项目。
|
小程序 数据库
微信小程序访问云数据库
微信小程序访问云数据库
283 1
|
6月前
|
Java Linux
java的jar后台启动
java的jar后台启动
172 14
|
监控 API 数据安全/隐私保护
2024年开源API工具盘点,覆盖API全生命周期
2024年经济持续低迷,本文整理一些免费的开源工具,旨在帮助企业组织降低工具的支出成本,能用免费的何必用付费的呢(狗头)?
613 0
|
UED 开发者
「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle和Checkbox组件
在鸿蒙开发中,Toggle 和 Checkbox 是常用的交互组件,分别用于实现开关切换和多项选择。Toggle 提供多种类型以适应不同场景,而 Checkbox 支持自定义样式及事件回调。本篇将详细介绍这两个组件的基本用法,并通过实战展示它们的组合应用。
321 7
「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle和Checkbox组件
|
10月前
|
存储 架构师 容灾
阿里云基础设施高可用最佳实践沙龙上海站圆满举办!
2025年1月9日,阿里云在上海虹桥绿地铂瑞酒店成功举办基础设施高可用最佳实践沙龙NO.2。活动吸引了华东地区多家企业的CTO、架构师和技术从业者参与。专家们分享了高可用的基础知识、分级标准及云端架构实战经验,涵盖计算、存储、网络和云原生等领域,重点讨论了企业如何在阿里云上构建高可用数据中心。现场互动热烈,参会者与专家深入交流,探讨技术应用与合作机会。
|
NoSQL MongoDB 数据库
MongoDB 删除数据库
10月更文挑战第13天
292 0
|
Kubernetes 搜索推荐 应用服务中间件
通过keepalived+nginx实现 k8s apiserver节点高可用
通过keepalived+nginx实现 k8s apiserver节点高可用
1691 17
|
SQL Java 测试技术
Jmeter的安装与快速使用(做并发测试)
Jmeter的安装与快速使用(做并发测试)
1109 0
|
消息中间件 RocketMQ
【RocketMQ系列四】消息示例-简单消息的实现
【RocketMQ系列四】消息示例-简单消息的实现
197 0