本主题简单概述了 IBM portlet API。不推荐使用该 API,并且本主题仅为尚未迁移到标准 portlet API 的 portlet 提供支持内容。
抽象 Portlet 类是 IBM portlet API 的核心抽象。Portlet 类扩展 Servlet API 的 HTTPServlet。所有 portlet 间接地扩展此抽象类,且从 HttpServlet 继承,如下所示:
... +--javax.servlet.http.HttpServlet |
因此,portlet 是特殊类型的 servlet。这种类型的 servlet 的属性使它们能容易地插入并在门户网站服务器中运行。与 servlet 不同,portlet 不能直接发送重定向或错误到浏览器,转发请求,或者写任意的标记到输出流。portlet 容器依赖于 WebSphere Application Server 实现的 J2EE 体系结构。结果是,portlet 按类似于 J2EE Web 应用程序的方式封装,并按类似于 servlet 的方式部署。
总之,与 servlet 相比,可更加动态地管理 portlet。可在不启动和重新启动门户网站服务器的情况下,应用以下更新:
- 可使用门户网站管理用户界面安装和除去由几个 portlet 组成的 portlet 应用程序。
- portlet 的设置可由有适当访问权的管理员更改
- 可使用管理 portlet 动态创建和删除 portlet。例如,一旦管理员创建新的剪切,剪切 portlet 就可用于创建新的 portlet 实例。
portlet 容器依赖于 WebSphere Application Server 实现的 J2EE 体系结构。结果是,portlet 按类似于 J2EE Web 应用程序的方式封装在 WAR 文件中,并按类似于 servlet 的方式部署。与其他 servlet 相似,要使用 servlet 部署描述符(web.xml)把 portlet 定义到应用程序服务器。这个文件定义 portlet 的类文件和只读初始化参数。
下图显示部署了其 WAR 文件之后的 portlet。对于门户网站服务器上部署的每个 portlet,它在应用程序服务器上创建一个 servlet 或者 portlet 类实例。
初始化参数是由 portlet 开发者设置的,并可由 portlet 使用 PortletConfig 对象读取。servlet 部署描述符可以包含多个 Web 应用程序,每个 Web 应用程序由 <servlet> 元素定义。此外,每个 servlet 定义可以指向同一 portlet 类文件,这样可为每个 portlet 类实例使用不同的初始化参数,创建不同的 PortletConfig 对象。有关更多信息,请参阅 Web 应用程序部署描述符。