近些年来,许多组织已经使用portal承载各种内部和外部的应用。许多知名的J2EEportal供应商针对这个利润丰厚的市场提供各自的产品。在过去,每个portal都定义了它们自己的专有API,用于在portal上构建portlet,应用组件。不幸的是,针对这么多的API进行编码,每个厂商都限制、锁定了门户开发者。现在JavaPortlet规范(JSR168)改变了这一切。
这个规范是由J2EE portal供应商委员会制定的,旨在实现portal和portlet之间的互操作性。供应商们都被要求通过SunMicrosystems' Technology Compatibility Kit,或TCK的一系列测试。这种标准化有助于简化portlet开发,是开发人员能够创建兼容任意J2EEportal服务器的可插入组件。
本文从portal,portlet和portlet容器的高级定义开始。之后,我们将重点介绍Javaportlet规范的最重要的部分。
portal,portlet和portlet容器
针对Java portlet规范进行开发,需要考虑三种逻辑组件。
一个portal是将portlet应用按照可见格式聚集在一起的一个应用程序。在表现层之上,一个portal通常允许用户定制他们的展示界面,包括显示什么样的portlet。门户也可以为用户提供方便的单点登录机制。
一个portlet就是一个单独的web组件,可以使用户通过portal界面进行访问。通常情况下,一个用户通过浏览器访问单个portlet只会生成一个标记片段。用户从portal页面向portlet发出请求。Portal将这些请求转发到portlet容器,它是负责管理portlet生命周期的。
Portlet容器介于一个portal和它的portlets之间。Portlet容器为portlets提供了运行时环境,就像servlet容易为servlets提供环境一样。Portlet容易通过调用portlets的生命周期方法对它们进行管理。容器将请求转发给相应的portlet。当一个portlet生成一个响应,portlet容易会将它发送到portal呈现给用户。一个用户的portal页面的事件的顺序如下所示。需要指出的是一个portal和portlet容器之间在逻辑上是一致的。它们可能就是一个物理组件。