用WebLogic Portal 8.1 开发 JSR 168 Portlets

来源:互联网 发布:外国人入籍民族知乎 编辑:程序博客网 时间:2024/05/13 20:30
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. Portletportlet 是一个基于 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
 
原创粉丝点击