(Portal 开发读书笔记) Portlet生命周期
2012-04-30 15:27
302 查看
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容器调用:
b.Event Request
这种请求可以让Portlet之间进行交互和协作.
对应的请求处理方法是定义在EventPortlet接口中的processEvent()方法,被Portlet容器调用:
c.Render Request
这种请求可以让Portlet展现内容。render的请求是幂等的。(各次请求一样)
对应的请求处理方法是定义在Portlet接口中的render()方法,被Portlet容器调用:
d.Resource Request
这种请求可以让Portlet服务资源或者内容片断,
对应的请求处理方法是定义在ResourceServingPortlet中的serveResources()方法,被Portlet容器调用:
而GenericServlet这个抽象类它实现了Portlet接口,EventPortlet接口和ResourceServingPortlet接口,所以非常全面,它可以为任何类型的请求提供服务,所以我们的Portlet实现类一般继承自GenericServlet抽象类.
结束服务:
Portlet容器负责取结束某Portlet实例,当其认为这个Portlet实例没有必要再提供服务时。它会调用destroy()方法,而开发者可以在destroy()方法中做一些释放资源和保存必要信息的功能。一旦destory方法被调用,portlet就不能再接受任何请求,而其对应的就会被垃圾回收(不是立刻)。如果容器想重启启动这个portlet,就要重复之前的加载、实例化、初始化过程。
加载和实例化:
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容器调用:
public abstract void processAction(ActionRequest paramActionRequest, ActionResponse paramActionResponse) throws PortletException, IOException;
b.Event Request
这种请求可以让Portlet之间进行交互和协作.
对应的请求处理方法是定义在EventPortlet接口中的processEvent()方法,被Portlet容器调用:
public abstract interface EventPortlet { public abstract void processEvent(EventRequest paramEventRequest, EventResponse paramEventResponse) throws PortletException, IOException; }
c.Render Request
这种请求可以让Portlet展现内容。render的请求是幂等的。(各次请求一样)
对应的请求处理方法是定义在Portlet接口中的render()方法,被Portlet容器调用:
public abstract void render(RenderRequest paramRenderRequest, RenderResponse paramRenderResponse) throws PortletException, IOException;
d.Resource Request
这种请求可以让Portlet服务资源或者内容片断,
对应的请求处理方法是定义在ResourceServingPortlet中的serveResources()方法,被Portlet容器调用:
public abstract interface ResourceServingPortlet { public abstract void serveResource(ResourceRequest paramResourceRequest, ResourceResponse paramResourceResponse) throws PortletException, IOException; }
而GenericServlet这个抽象类它实现了Portlet接口,EventPortlet接口和ResourceServingPortlet接口,所以非常全面,它可以为任何类型的请求提供服务,所以我们的Portlet实现类一般继承自GenericServlet抽象类.
public abstract class GenericPortlet implements Portlet, PortletConfig, EventPortlet, ResourceServingPortlet {
结束服务:
Portlet容器负责取结束某Portlet实例,当其认为这个Portlet实例没有必要再提供服务时。它会调用destroy()方法,而开发者可以在destroy()方法中做一些释放资源和保存必要信息的功能。一旦destory方法被调用,portlet就不能再接受任何请求,而其对应的就会被垃圾回收(不是立刻)。如果容器想重启启动这个portlet,就要重复之前的加载、实例化、初始化过程。
相关文章推荐
- (Portal 开发读书笔记)AjaxPortlet
- (Portal 开发读书笔记)PortletFileUpload
- (Portal 开发读书笔记)Portlet间交互-PortletSession
- (Portal 开发读书笔记)Spring Portlet MVC 测试Controller
- (Portal 开发读书笔记)Portlet间交互-使用public render参数
- (转)(Portal 开发读书笔记) Portal Server/Portlet Container/Portlet
- (Portal 开发读书笔记)DispatcherPortlet
- (Portal 开发读书笔记)Portlet间交互-使用Portlet Events
- (Portal 开发读书笔记)本地化Portlet内容
- (Portal 开发读书笔记) 处理资源 ResourceServingPortlet
- (Portal 开发读书笔记)在portlet URL中使用<param>传递参数
- (Portal 开发读书笔记)Portlet和Servlet的异同
- (Portal开发读书笔记)PortletSessionUtil 类
- (Portal开发读书笔记)PortletSession 和 HttpSession
- (Portal开发读书笔记)Portlet 模式
- (Portal 开发读书笔记)Portlet中的Spring Web Application Context
- (Portal 开发读书笔记) Portlet间交互-概述
- (Portal 开发读书笔记)Spring Portlet MVC 常用注解大全
- 利用Jdeveloper 开发Portal (Portlet)