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

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

 

加载和实例化:ide

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

 

初始化:xml

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,就要重复以前的加载、实例化、初始化过程。

相关文章
相关标签/搜索