用WebLogic Portal 8.1 开发 JSR 168 Portlets

本文介绍JSR168规范及其在WebLogic Portal 8.1中的实现,对比不同portlet类型的特点,提供了HelloWorld示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSR 168 (Java Portlet) 是一种 Java 规范 , 其目的是在 portlet 和门户之间建立可移植性关系。这个规范的一个主要目标是为门户和 portlet 供应商建立一组 Java API 标准。这些 API 涉及的领域包括表示、聚合、安全性以及 portlet 生命周期。

用WebLogic Portal 8.1 开发 JSR 168 Portlets

作为一名应用程序开发人员 您应当分析在 WebLogic Portal 8.1 中提供的各种不同类型的 portlet , 找到最适合完成你当前任务的类型 portlet 。例如,如果您正在为连接 Java 控件、利用基于 Struts Java Page Flow(Java 页面流) portlet 。如果您想寻找一种简单的 portlet 或想把现有的 JSP 页面转化为 portlet 时,可以考虑使用 JSP portlet 。如果您是为一个独立软件公司或其他关注跨多个 portlet 容器进行移植的企业工作的话,那么您可以选择使用与 JSR 168 兼容 的 Java portlet 。

下面的表格可以帮助您决定在构建 portlet 时应该使用哪种工具:

Portlet 类型优点缺点
基于 JSP 或 HTML 的 portlet· 易于实施和部署
· 提供不太复杂的基本功能
· 业务逻辑和表示层可以合并到 JSP
· 不太适合高级 portlet 导航
基于JSR 168 的 portlet· 适用于跨平台 portlet 的可移植性
· 无需使用特定于门户服务器的 JSP 标签
· 行为类似于 Servlet
· 不利用 BEA 高级 portlet 特性
· 需要对 J2EE 编程模型有深入了解
基于 Java Page Flow的 portlet· 允许您从导航控制和其他业务逻辑中分离用户界面代码
· 提供构建简单和高级 portlet 导航模型的能力
· 允许快速利用 Java 控件、Web 服务和业务流程
· 为构建大量基于 Struts 的应用提供可视化环境
· 高级页面流特性,对静态、简单的或单视图的 portlet 不是必需的

规范中的组件


有两个与 JSR 168 相关联的主要组件 --  portlet 和 portlet 容器。

1. Portlet:portlet 是一个基于 Java 技术的 Web 组件,它由负责处理请求和生成动态内容的 portlet 容器管理。Portlet 被门户用作可插入用户界面组件,用户界面组件用于在信息系统中提供表示层。

2. Portlet 容器:portlet 容器为 portlet提供所需的运行时环境,为 portlet 首选项管理生命周期和持久性存储。

Java Portlets


JSR 168 中定义的 Portlet API 与 servlet API 有许多公共的概念:

1. Portlet 是基于 Java 技术的 web 组件。

2. 专门的容器管理 Portlet 以及 portlet 生命周期。

3. Portlet用于生成动态内容。


以下几个方面是 Portlet 与 servlet 的不同之处:

1. Portlet 只生成标记片段,并不产生完整的文档。门户将 portlet 标记片段汇聚合为完整的门户页面。

2. Portlet 不直接绑定到 URL。

3. Web 客户机通过门户系统和 portlet 进行交互。

4. Portlet 有许多细化的请求处理、操作请求、交付请求。

5. Portlet 具有预定义的 portlet 模式和窗口状态。 .


Portlet 还能拥有以下额外的 servlet 不提供的功能:

1. Portlet 具有访问及存储持久性配置和自定义数据的方法。

2. Portlet可以访问用户概要信息。

3. Portlet 拥有URL重写功能,可以用来生成超链接,以允许门户服务器在页面片段中创建未知链接及操作。 

4. Portlet 可以在 portlet 会话中将瞬变数据存储在两个不同的作用域 : 应用程序级作用域和 portlet 私有作用域。

Java Portlet 容器

Portlet 容器是 Servlet 容器的扩展。Portlet API v1.0 基于 J2EE (Java 2 Platform, Enterprise Edition) v1.3。Portlet 容器和 portlet 符合 J2EE 规范所描述的运行环境的需求。

Portlet 容器必须使用与 servlet 容器用于Web 应用程序资源相同的类加载器,以加载 portlet 应用程序内的 portlet 及相关资源。Portlet 容器负责提醒用户角色的 portlet ,但是portlet不会处理用户的身份验证。


BEA 实现概述


BEA 实现了完全兼容 JSR 168 的 portlet BEA 实现完全利用了 WebLogic Application Server 在 portlet的容错性、伸缩性、安全性以及热部署方面的能力。Portlet 容器将管理 portlet 生命周期的各个阶段。实现本身由若干 jar 文件组成,这些可添加到门户 Web 应用中。

1 Portlet 容器交互的请求的典型流程图



portlet 容器支持 Portlet 首选项概念。这就允许一个简洁的 portlet 实例可作为逻辑实例用于几个用户,同样的道理,也可使多个实例用于单个用户,而这些用户反过来又可以定制与其逻辑实例相关联的行为和外观(look and feel)。这些基础特性在 WebLogic Portal 8.1 中已存在,并且它可应用于非 JSR168 的portlet上。

JSR168 Hello World Portlet


下边是一个完全兼容 JSR 168 的  "Hello World" portlet 实例:

package examples.helloworld;
 
import java.io.IOException;
import javax.portlet.PortletException;
import javax.portlet.GenericPortlet;
import javax.portlet.RenderResponse;
import javax.portlet.RenderRequest;
 
public class HelloWorld extends GenericPortlet
 
  {
 
public void render(RenderRequest request, RenderResponse response)
throws PortletException, IOException
 
  {
  response.getWriter().write("<p>Hello World</p>");
  }
 
  }


下边是 Hello World portlet 的 portlet.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/portlet" xmlns="http://java.sun.com/xml/ns/portlet">
    <portlet>
       <portlet-name>helloWorld</portlet-name>
   <portlet-class>examples.helloworld.HelloWorld</portlet-class>
       <portlet-info>
   <title>Hello World</title>
   </portlet-info>
    </portlet>
</portlet-app>


结束语


BEA WebLogic Portal 团队积极投身于研究 JSR 168 的专家组。 您可以下载使用 Weblogic Portal 8.1 SP2 的 JSR168 完整实现过程。

有关 JSR 168 和 BEA WebLogic Portal 8.1 的更多信息 , 请参见 :

dev2dev 上关于 BEA WebLogic Portal 的页面 :
http://dev2dev.bea.com/products/wlportal81/index.jsp

BEA WebLogic Portal 的文档站点 :
http://edocs.bea.com/wlp/docs81/index.html

BEA WebLogic Portal 新闻组 :
http://newsgroups.bea.com/cgi-bin/dnewsweb?cmd=xover&group=WebLogic.developer.interest.portal&utag=

BEA WebLogic Portal 产品页 :
http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/portal

JSR 168 主页 :
http://www.jcp.org/en/jsr/detail?id=168
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值