`
bravewu
  • 浏览: 48292 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

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 工具的考虑

 

通过载入工具并对Portlet应用进行内部分析的方式来触发静态初始化方法与调用init方法是不同的。开发者在Portlet接口的init没有被调用之前,不能将Portlet看成是在Portlet容器中运行且活动的。比如,在发生静态(类)初始化时,Portlet不应该尝试建立与数据库或JavaBean容器的连接。

 

PLT. 5.2.3 Portlet窗口

 

Portlet定义可以包含一些具有默认值的首选项属性。它们是用来创建首选项对象(见“PLT.14 Portlet” 首选项章)。

 

运行时服务一个请求,Portlet对象会与一个首选项属性进行关联。一般地,Portlet自定义它的行为与生成内容都是基于与之关联的首选项对象的属性。Portlet可以编辑、修改和添加此首选项属性。

 

默认情况下,首选项对象是利用定义在Portlet部署描述符文件中的初始化首选项值来构建的。Portal或Portlet容器的实现可以提供基于已存在的首选项对象创建新的首选项对象的管理方式。Portal或Portlet容器创建的首选项对象可以进一步自定义它们的属性。

 

在将一个Portlet放置进一个Portal页面里时,一个首选项对象也会与之关联。在Portal页面上,Portlet和首选项对象所生成的事物被称作Portlet窗口。Portal或Portlet容器的实现管理此关联。

 

一个Portal页面可以包含多个引用于同一个Portlet及首选项对象的Portlet窗口。

首选项对象的操作、管理与配置和Portlet窗口的创建是通过Portal或Portlet容器的实现来进行。该实现也可以提供其它高级特征,如首选项对象的分线管理或首选项属性的级联变更。

 

PLT. 5.2.4 请求的处理

 

在Portlet被正确初始化后,Portlet容器会调用Portlet来处理客户端请求。

 

此Portlet接口定义了两个方法来处理请求:processAction方法和render方法。

 

当Portal或Portlet容器调用Portlet的processAction方法时,此Portlet请求是一个动作请求。而当Portal或Portlet容器调用Portlet的render方法时,此Portlet请求是一个渲染请求。

 

一般地,客户端的请求是通过Portlet生成的URLs来触发的。这些URLs可以被称作Portlet URLs。一个Portlet URL是指向一个特定的Portlet。Portlet URLs可以被分成两种:动作URLs和渲染URLs。请参考“PLT.7 Portlet URLs”章了解有关Portlet URLs的信息。

 

 正常地,就Portal页面上的一个Portlet而言,被动作URL触发的客户端请求,可以被翻译成一个动作请求和许多渲染请求;而被渲染URL触发的客户端请求,则只被翻译成许多渲染请求。

 

如果客户端请求被动作URL触发,Portal或Portlet容器会首先通过调用目标Portlet的processAction方法来触发动作请求。Portal或Portlet容器必须等到动作请求完成。然后,Portal或Portlet容器必须通过调用Portal页面上所有Portlets的render方法来触发渲染请求,同时还需要处理内容已被缓存的Portlet的可能异常。渲染请求会被有顺序地或没有保证顺序地平行执行。

 

 

如果客户端请求被渲染URL触发,Portal或Portlet容器必须通过调用Portal页面上所有Portlets的render方法来触发渲染请求,同时还需要处理内容已被缓存的Portlet的可能异常。渲染请求会被依次地或同时地执行。而Portal或Portlet容器无须为此客户端请调用Portal页面上任一Portlet的processAction方法。

 

如果Portlet开启缓存功能,Portal或Portlet容器可选择不去调用render方法。而Portal或Portlet容器可使用此Portlet的缓存内容。请参考“PLT.18 缓存”章了解有关Portlet 缓存的信息。

 

被设置为服务状态的Portlet,如在生命周期中如果没有处理任何请求,可以自行结束。

 

 PLT. 5.2.4.1 动作请求

 

代表性地,在对动作请求的响应中,Portlet会根据在动作请求参数中发过来的信息来更新状态。

 

Portlet接口的processAction方法接收两个参数:ActionRequest和ActionResponse。

 

ActionRequest对象提供对诸如动作请求参数、窗口状态、Portlet模式、Portal上下文、Portlet会话和Portlet首选项数据之类信息的访问途径。

 

在处理一个动作请求时,Portlet会引导Portal或Portlet容器为用户重定向到一个指定的URL。如果Portlet发出重定向命令,而当processAction方法结束时,Portal或Portlet容器必须将重定向命令发回给用户代理并必须结束对客户端请求的处理。

 

Portlet在收到动作请求时可以改变它的Portlet模式和窗口状态。这是通过ActionRepsonse对象来实现的。改变后的Portlet模式必须对Portlet之后接收到的渲染请求有效。

  • 大小: 24.5 KB
1
0
分享到:
评论

相关推荐

    JSR-168 Portlet指南.doc

    当portlet符合JSR-168规范时,通过Web Services for Remote Portlets (WSRP)生产者公开JSR-168 Portlet会更容易一些。WSRP提供了一个通过Web service联合portlet内容的标准。JSR-168和WSRP 1.0 portlet功能是紧密...

    基于JSR168的portlet精彩范例

    基于JSR168的portlet精彩范例

    jsr168 portlet 加入jetspeed中入门

    本压缩包里含有了开发一个jsr168 portlet所需要的软件 本想包含jetspeed2.0的安装程序的,可是最多智能上传10M <br>从环境配置讲到开发步骤。 并表明了很多注意的地方 本包适合初学portlet的人使用

    The_Java_Portlet_Specification(JSR168规范英文版)

    PORTAL开发相关标准:JSR168Introduction_to_JSR_168

    Struts2 JSR168 Portlet的开发

    Struts2 JSR168 Portlet的开发

    JSR 168 Portlet标准(全)

    至于什么是 portal 呢, 中文翻译为 "门户网站"。 有人可能想.. 天杀的.. 门户网站不是就像 yahoo, pchome, yam 等等。不过, 我们现在讨论的 portal server, 不是那么地简单, 基本上 yahoo, pchome, yam 那些只能...

    在RAD7中开发JSR168 Portlet

    在RAD7中开发JSR168 Portlet

    JSR 168 Portlet Project Creator 插件jar包

    Eclipse 中 JSR 168 Portlet Project Creator 插件两个jar包 用于开发Portlet

    portlet 规范和API(jsr 168/286)

    目前最全的资源 jsr168 jsr286 中英文都有 还有API

    portlet开发样例.docx

    开发portlet过程:包括:1.1 类名规范;1.2 RAD7开发JSR168 portlet规范;1.3编写代码 .......

    JSR286 portlet新特性

    文章专门针对具有 JSR 168 Portlet 开发基础,并且想了解 JSR 286 Portlet 新特性和开发流程的开发人员。在学习完本系列后,您将了解相对于 JSR 168 Portlet,JSR 286 Portlet 究竟提供了哪些增强功能, 以及这些...

    JSR286 portlet开发标准

    文章专门针对具有 JSR 168 Portlet 开发基础,并且想了解 JSR 286 Portlet 新特性和开发流程的开发人员。在学习完本系列后,您将了解相对于 JSR 168 Portlet,JSR 286 Portlet 究竟提供了哪些增强功能, 以及这些...

    jsr168 portlet

    把liferay自带的analog_clock改成了jsr168 portlet 其中用到了swfobject 显示fkash

    JSR168_Portlet开发入门

    JSR-168 Portlet 开发 JSR-168 Portlet 开发

    JSR168规范与API手册

    JSR168规范与API手册 官方手册、标准 Portlet1.0开发必备

    JSR168.doc

    JSR168 portlet portal

    Portlet 2规范

    JSR-286最终版, 新增Portlet2.0规范,和IPC. inter-portlet-communication.

    IBM portlet开发指南

    四、 Portlet概念 ............................................................................................................. 55 Portlet定义 .............................................................

    JSR168 PORLET标准手册汉化整理.pdf

    JSR168 PORLET标准手册汉化整理.pdfJSR168 PORLET标准手册汉化整理.pdfJSR168 PORLET标准手册汉化整理.pdfJSR168 PORLET标准手册汉化整理.pdfJSR168 PORLET标准手册汉化整理.pdfJSR168 PORLET标准手册汉化整理....

Global site tag (gtag.js) - Google Analytics