日期:2014-05-16  浏览次数:20373 次

JSR168 Portlet规范的中文版 【四】 PLT. 5
PLT. 5


?

?Portlet 接口

?

Portlet接口是Portlet API的主要抽象。所有Portlet都是或者直接实现此接口,或者更多地是继承实现了此接口的类。

?

本Porlet API包括一个实现了Portlet接口的GenericPortlet类,此类可以提供默认功能。开发者应直接或间接地继承此GenericPortlet类来实现他们的Portlet。

?

PLT. 5.1 Portlet实例数量

?

在Portlet应用的部署描述符中的Portlet定义部分是用来控制Portlet容器如何创建Portlet实例的。

?

对于一个不是在分布环境(默认的)中的Portlet,Portlet容器必须实例化并每个Portlet定义只使用一个Portlet对象。

?

如果将Portlet作为一个标记为分布式的Portlet应用的一部分来部署,在web.xml部署描述符文件中,Portlet容器,在一个虚拟机中(VM)中的一个部署描述符中,一个Portlet定义只能实例化一个Portlet对象。

?

PLT. 5.2 Portlet生命周期

?

Portlet是通过精心定义的生命周期来进行管理。它可以定义Portlet怎么被载入、实例化与初始化,如何处理客户端的请求,以及如何退出服务。Portlet的生命周期是通过Portlet接口的init、processAction、render和destroy四个方法来表述的。

?

PLT. 5.2.1 载入与实例化

?

Portlet容器负责载入与实例化Portlet。载入与实例化是发生在Portlet容器启动Portlet应用,或延迟到Portlet容器决定Portlet需要为请求提供服务时。

?

Portlet容器必须使用用于载入Portlet应用其它Web应用的类载入器来载入Portlet类。载入Portlet类后,Portlet容器会对它们进行实例化以供使用。

?

PLT. 5.2.2 初始化

?

在Portlet对象被实例化后,Portlet容器必须在调用Portlet来处理请求前,将Portlet进行初始化。初始化是用来对初始化一些高耗资源(像端后连接),和运行一些一次性的行为。Portlet容器必须通过传入实现了PortletConfig接口的唯一(每个Portlet定义)对象调用init方法来初始化Portlet对象。该配置对象可以提供访问初始化参数和在部署描述符中的Portlet定义部分定义的ResourceBundle的接口。请参考“PLT.6 Portlet配置”章了解有关PortletConfig接口的信息。该配置对象也为Portlet提供了访问用来描述Portlet运行环境的上下文对象的接口。请参考“PLT.10 Portlet上下文”章了解有关PortletContext接口的信息。

?

PLT. 5.2.2.1 初始化时的错误条件

?

在初始化过程中,Portlet对象可能会抛出UnavailableException或PortletException的异常。在这种情况下,Portlet容器不必将Portlet对象放置到活动服务状态,而必须释放该Portlet对象。这时,无需调用destroy方法,因为这种情况会视初始化未成功。

?

初始化时抛出的RuntimeException会被作为PortletException来处理。

?

PLT. 5.2.2.2 工具的考虑

?