`
bravewu
  • 浏览: 49365 次
  • 性别: 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
分享到:
评论

相关推荐

    portlet 规范和API(jsr 168/286)

    JSR 168是portlet规范的第一个主要版本,发布于2003年。它定义了一个portlet如何与门户服务器进行通信的接口,允许portlet在门户页面上与其他portlet并存,并提供了一套标准化的方法来处理用户的请求和显示内容。JSR...

    The_Java_Portlet_Specification(JSR168规范英文版)

    ### JSR168规范详解:The Java Portlet Specification #### 引言 JSR168(Java Specification Request 168)是一项重要的技术规范,它为门户服务器中的组件开发提供了一套标准化的方法。这一规范得到了业界主要...

    JSR 168 Portlet Project Creator 插件jar包

    JSR 168,全称为JavaServer Pages Standard Tag Library 1.6,是Java社区进程(Java Community Process)发布的一项标准,旨在规范portlet的开发。Portlet是一种可重用的Web组件,常用于企业级应用程序,特别是内容...

    基于JSR168的portlet精彩范例

    基于JSR168的portlet精彩范例

    在RAD7中开发JSR168 Portlet

    JSR168(Java Portlet API 1.0)是Java Community Process发布的一个规范,用于定义portlet如何在门户环境中运行,提供portlet开发的标准接口。 首先,开发环境为Windows XP SP2上的RAD 7.0.0.3,而测试环境则是...

    jsr168 portlet 加入jetspeed中入门

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

    Struts2 JSR168 Portlet的开发

    Struts2 JSR168 Portlet的开发是构建在Java Portlet规范(JSR168)基础上,结合流行的MVC框架Struts2来创建适用于企业级门户平台的应用组件。这种开发方式允许开发者利用Struts2的强大功能,如Action、Interceptor、...

    JSR-168 Portlet指南.doc

    遵循JSR-168规范开发的portlet,可以在多种支持该规范的门户服务器之间轻松迁移,因为大多数基于Java的门户服务器都实现了JSR-168接口。 **一、JSR-168的优势** 1. **可移植性**:JSR-168定义了一套标准接口和生命...

    比较-JSR-168-Java-Portlet-规范与-IBM-Portlet-API.docx

    1. **Portlet生命周期**:JSR 168定义了portlet的四个生命周期阶段:初始化、加载、渲染和销毁。portlet开发者可以通过这些阶段管理portlet的状态和资源。 2. **事件处理**:portlet可以通过发布和订阅事件来与其他...

    JSR 168 Portlet标准(全)

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

    jsr168 portlet(struts2+spring2.5+hibernate3.3)(转载)

    【标题】"jsr168 portlet"是基于Java技术栈的一种Web应用程序规范,用于构建可重用、可组合的portlet组件。JSR(Java Specification Request)是Java社区进程中的一个请求,用来定义新的Java API或改进现有API。JSR...

    JSR168规范与API手册

    5. **API接口**:JSR168提供了一系列的API接口,供portlet开发者使用。例如,`Portlet`接口提供了portlet的基本功能,`PortletConfig`接口提供了portlet配置信息,`PortletRequest`和`PortletResponse`接口则分别...

    JSR168_Portlet开发入门

    JSR-168,全称为Java Specification Request 168,是Java Community Process发布的一个标准,用于定义portlet(portlet是Web应用程序中的可重用组件)的API。这个标准为portlet开发者提供了一种统一的方式,使得...

    JSR-168 中文版,实现门户必备。

    "JSR-168 Portlet中文指南大全.doc"这个文档很可能详细介绍了JSR-168标准的各个方面,包括但不限于上述概念,可能还包括如何开发portlet、配置portlet容器、实现portlet间的通信等实践指导。对于想要学习和实施JSR-...

    使用jsr168标准开发portlet

    JSR 168是Java社区进程(Java Community Process)提出的一个标准,旨在规范portlet在企业级portlet容器如WebSphere Portal、Liferay Portal等中的开发和交互。这一标准定义了portlet的生命周期、API接口以及portlet...

    JSR286 portlet新特性

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

    Portlet-Specification(2).rar_portlet

    6. **JSR 286标准**:"Portlet Specification(2)"可能指的是JSR 286(Portlet 2.0),这是一个重要的更新,增加了异步处理、Ajax支持、富客户端接口等功能,提升了portlet的性能和用户体验。 7. **portlet部署**:...

    Portlet规范介绍.rar

    JSR 286是Portlet规范的增强版,于2006年发布,增加了异步处理、安全控制、缓存管理等功能,使得portlet能更高效地处理复杂任务。JSR 286还引入了Portlet Preferences API,让portlet可以保存和恢复用户的偏好设置,...

    JSR286 portlet开发标准

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

Global site tag (gtag.js) - Google Analytics