The release of the JSR-000168 Portlet API Specification 1.0 Public Review Draft has been accompanied by announcements for a Sun ONE Studio Portlet Builder beta and a pre-release of Oracle9iAS Portal's WSRP Portal. The JSR-000168 Portlet Specification has been distributed as a PDF Portlet Specification with code and reference in Portlet API Specification Interface Classes and Portlet API Javadoc Documentation. The Portlet Specification defines a proposed standard for the Java portlet API as outlined in the JSR 168 Java Specification Request, designed to "enable interoperability between portlets and portals by defining a set of APIs for Portal computing addressing the areas of aggregation, personalization, presentation and security."
A portal in terms of this specification is a web based application that "provides personalization, single sign on, content aggregation from different sources and hosts the presentation layer of Information Systems. Aggregation is the action of integrating content from different sources within a web page. A portal may have sophisticated personalization features to provide customized content to users, and portal pages may have different set of portlets creating content for different users." A portlet is "a Java technology based web component, managed by a portlet container, that processes requests and generates dynamic content. Portlets are used by portals as pluggable user interface components that provide a presentation layer to Information Systems."
The intended audience for this specification includes "portal server vendors that want to provide portlet engines that conform to this standard, authoring tool developers that want to support web applications that conform to this specification, and experienced portlet authors who want to understand the underlying mechanisms of portlet technology." The Portlet Specification Public Review Draft has been edited by Alejandro Abdelnur (Sun Microsystems) and Stefan Hepper (IBM) with input from the JSR 168 Expert Group. The public review period ends 16-August-2003.
Portlet Specification. JSR-000168 Portlet API Specification 1.0 Public Review Draft. Alejandro Abdelnur (Sun Microsystems) and Stefan Hepper (IBM). Produced by the JSR 168 Expert Group. July 9, 2003. Version: 1.0 (20030709). Status: Pre-FCS. Release date: July 14, 2003. Close of Public Review: 16-August-2003. Specification Leads: Sun Microsystems, Inc. and IBM Corporation. Copyright (c) 2003 Sun Microsystems, Inc. and IBM Corporation. File: portlet-1_0-prd-spec.pdf, 372766 bytes. 135 pages.
JSR-000168 Portlet API Specification Interface Classes 1.0 Public Review Draft. File: portlet-1_0-prd-spec-api.zip, 51664 bytes. See the file listing.
JSR-000168 Portlet API Documentation 1.0 Public Review Draft. The javadoc documentation includes the full specifications of classes, interfaces, and method signatures. Distribution file: portlet-1_0-prd-javadoc.zip, 115103 bytes. See the file listing.
From the JSR 168 Specification Interface Overview
"What is a Portal? A portal is a web based application that -- commonly -- provides personalization, single sign on, content aggregation from different sources and hosts the presentation layer of Information Systems. Aggregation is the action of integrating content from different sources within a web page. A portal may have sophisticated personalization features to provide customized content to users. Portal pages may have different set of portlets creating content for different users."
"What is a Portlet? A portlet is a Java technology based web component, managed by a portlet container, that processes requests and generates dynamic content. Portlets are used by portals as pluggable user interface components that provide a presentation layer to Information Systems. The content generated by a portlet is also called a fragment. A fragment is a piece of markup (e.g., HTML, XHTML, WML) adhering to certain rules and can be aggregated with other fragments to form a complete document. The content of a portlet is normally aggregated with the content of other portlets to form the portal page. The lifecycle of a portlet is managed by the portlet container."
"Web clients interact with portlets via a request/response paradigm implemented by the portal. Normally, users interact with content produced by portlets, for example by following links or submitting forms, resulting in portlet actions being received by the portal, which are forwarded by it to the portlets targeted by the user's interactions. The content generated by a portlet may vary from one user to another depending on the user configuration for the portlet..."
"What is a Portlet Container? A portlet container runs portlets and provides them with the required runtime environment. A portlet container contains portlets and manages their lifecycle. It also provides persistent storage for portlet preferences. A portlet container receives requests from the portal to execute requests on the portlets hosted by it. A portlet container is not responsible for aggregating the content produced by the portlets. It is the responsibility of the portal to handle the aggregation. A portal and a portlet container can be built together as a single component of an application suite or as two separate components of a portal application..."
[For example], "the following is a typical sequence of events, initiated when users access their portal page:
- A client (e.g., a web browser) after being authenticated makes an HTTP request to the portal
- The request is received by the portal
- The portal determines if the request contains an action targeted to any of the portlets associated with the portal page
- If there is an action targeted to a portlet, the portal requests the portlet container to invoke the portlet to process the action
- A portal invokes portlets, through the portlet container, to obtain content fragments that can be included in the resulting portal page
- The portal aggregates the output of the portlets in the portal page and sends the portal page back to the client"
"Elements of a Portal Page: A portlet generates markup fragments. A portal normally adds a title, control buttons and other decorations to the markup fragment generated by the portlet, this new fragment is called a portlet window. Then the portal aggregates portlet windows into a complete document, the portal page. [As to] Portal Page Creation, portlets run within a portlet container. The portlet container receives the content generated by the portlets. Typically, the portlet container hands the portlet content to a portal. The portal server creates the portal page with the content generated by the portlets and sends it to the client device (i.e., a browser) where it is displayed to the user. [In the] Portal Page Request Sequence, users access a portal by using a client device such as an HTML browser or a web-enabled phone. Upon receiving the request, the portal determines the list of portlets that need to be executed to satisfy the request. The portal, through the portlet container, invokes the portlets. The portal creates the portal page with the fragments generated by the portlets and the page is returned to the client where it is presented to the user..." [adapted from the Overview and Concepts sections]
Portlet API Package Description
"The javax.portlet package defines the API for portlets. A portlet is a Java technology based web component, managed by a portlet container, that processes requests and generates dynamic content. Portlets provide a presentation layer to Information Systems. Portlets generate fragments of markup (e.g., HTML, XHTML, WML). A portal combines markup fragments generated by different portlets into a portal page. A portlet container manages the lifecyle of portlets. It also provides the required runtime environment. Portlets are bundled in Portlet Applications as web applications using the WAR file format. A portlet application consists of two deployment descriptors: one to specify the web application resources (web.xml) and one to specify the portlet resources (portlet.xml)..." See the XML Schema for the Portlet 1.0 deployment descriptor and the sample XML instance for a portlet displaying the time in different time zones. [adapted from the 'JSR-000168 Portlet API Specification Interface Classes 1.0 Public Review Draft']
From the Sun Introduction to JSR 168
"The Java Specification Request 168 Portlet Specification (JSR 168) standardizes how components for portal servers are to be developed. This standard has industry backing from major portal server vendors.
An example, the Weather Portlet, is provided to demonstrate the key functionality offered by the Portlet API: action request handling, render request handling, render parameters, dispatching to JavaServer Pages (JSP) technology, portlet tag library, portlet URLs, portlet modes, portlet cache and portlet preferences.
The specification defines a common Portlet API and infrastructure that provides facilities for personalization, presentation, and security. Portlets using this API and adhering to the specification will be product agnostic, and may be deployed to any portal product that conforms to the specification.
IT Managers benefit from the ability to support multiple portal products, thus accommodating the unique business needs of various departments and audiences. The compliant portlets can be deployed to all compliant portal frameworks without extensive engineering changes.
For developers, the specification offers code reusability. Developers who want to portal enable their applications can create and maintain one set of JSR 168 compliant portlets. These portlets can be run on any JSR 168 Portlet Specification compliant portal server with few, if any, modifications. Because this API is specifically designed for portlet creation, developers will benefit from extra functionality beyond the standard servlet functionality...
This standard also creates a market opportunity for portal tools: IDEs, test tools, performance measurement tools and reporting interfaces can be marketed to a wider audience. Portal tool companies can support all compliant portal servers without additional engineering and support costs.
The Portlet Specification addresses the following topics [...]: (1) The portlet container contract and portlet life cycle management; (2) The definition of window states and portlet modes; (3) Portlet preferences management; (4) User information; (5) Packaging and deployment; (6) Security; (7) JSP tags to aid portlet development." [adapted from the Sun Whitepaper]
Sun ONE Studio Portlet Builder Beta
As reported by Elizabeth Montalbano in CRN and elsewhere, Sun Microsystems plans to release "a Sun ONE Studio Portlet Builder beta aimed at standardizing how content is sent to Java-based portal servers" supporting JSR 186. [Quoting Adam Abramski, Sun's product line manager for Sun ONE Portal Server] "Sun will make available on its Web site Thursday a beta of the Sun ONE Portlet Builder that implements JSR 168, as well as four portlets and their source code that use the spec. Portlet Builder is a plug-in to the Sun ONE Studio IDE, and the update will be included in a new release of the product slated for fall ... Sun ONE Portal Server 6.2, which Sun plans to release in early to mid-September, also will support JSR 168... this version of Sun's portal will be a part of the initial release of Project Orion, also slated for the fall. Sun plans to make available on July 21  a controlled early access release version of Sun ONE Portal Server 6.2, Abramski added. Abramski said Sun wanted to give developers a preview not only of a tool that leverages the new technology spec, but also real-world examples of how a portal behaves when using the spec. The company also is providing a white paper on the new technology and its implementation. Solution providers currently do not have a standard way to pull content and information from other applications into Java-based portals, but Abramski said JSR 168 was developed to change that. Eventually, JSR 168 will become a part of J2EE, the collection of Java specifications that together make up the industry standard for building and deploying enterprise-scale Java applications..."
The free standing portlet code samples from Sun "illustrate the use of the JSR 168 specification:
- ShowTime Portlet: The ShowTime portlet allows you to display time based on the selected time zone and allows you to compare time between two different timezones. It is also a great example of content rendering using JSPs. JSP technology gives developers the flexibility to change the appearance of a page without altering the dynamic content. This portlet is the equivalent of a JSPProvider in the portlet world and provides most of the features offered by JSPProvider.
- Bookmarks Portlet: The Bookmarks portlet allows you to add bookmarks of your favorite intranet and Internet web pages to your Sun ONE Portal Server Desktop. This portlet has the same functionalities as the bookmarks provider and illustrates how the provider can be converted to portlet.
- Notepad Portlet: The Notepad portlet provides a way to create personal notepad messages which can then be organized under different categories. These messages will not be accessible by other users. Notepad portlet demonstrates the use of many portlet features.
- Weather Portlet: The Weather portlet allows you to get the current temperature from an input zip code. The temperature is fetched from XMethods' weather web service. The Weather portlet demonstrates the use of JAX-RPC to connect to a web service." [from "Introduction to JSR 168"]
Pre-release of Oracle9iAS WSRP Portal
Michael Freedman (Oracle) announced the update of the Oracle Portal site to support WSRP v 1.0, and the availability of Oracle's WSRP based JSR 168. The Oracle9iAS WSRP Portal is a public site intended for use to test WSRP producers. The container "exposes itself as a WSRP producer -- hence you can build test portlets in JSR 168 and run/test them against either your [favorite] WSRP consumer, or you can use the Oracle hosted WSRP consumer..."
About JCP2 Public Review Period
'Public Review" under JCP2 is a "30 to 90 day period when the public can review and comment on the draft Specification. Public Review begins when the PMO posts the draft Specification that was approved by the EC during Community Review on the JCP Web Site and announces it to both Members and the public. Anyone with access to the Internet can download and comment on the draft. Public Review is an important part of the JCP. In the past, comments from the public have raised fundamental architectural and technological issues that have considerably improved some Specifications. The Spec Lead is responsible for ensuring that all public comments are read and considered. If those comments result in revisions to the draft, and those revisions result in major changes (in the opinion of the Expert Group), then the Specification Lead will send an updated draft (with synopsis of the changes) to the PMO who will post both items to the JCP Web Site and notify both Members and the public..."
A portlet specification has also been advanced by members of the OASIS Web Services for Remote Portlets TC, chartered to "develop a web services standard that will allow for the 'plug-n-play' of portals, other intermediary web applications that aggregate content, and applications from disparate sources." The OASIS TC recently voted to approve its latest WSRP deliverables as a Committee Specification and to "submit a request for approval of the WSRP specification as an OASIS standard. The following companies have already committed that they will provide a statement saying they are successfully using the WSRP TC Specification for the submission of the TC Spec as an OASIS standard (in alphabetical order): BEA, IBM, Oracle, Plumtree, SAP, and Vignette." See the statements from IBM, SAP, BEA, Oracle, Plumtree, and Vignette.
For details on the advance of WSRP Version 1.0 toward an OASIS Open Standard, see the posting from OASIS WSRP TC Chair Rich Thompson and the accompanying list of WSRP specification deliverables. [source .DOC, cache]
Approved WSRP Version 1.0 Documents:
- Web Services for Remote Portlets Specification. Committee Specification 1.0, 14-July-2003. Edited by Alan Kropp (Vignette Corporation) Carsten Leue (IBM Corporation), and Rich Thompson (IBM Corporation). 86 pages (PDF). The PDF document describes the web service interface that is exposed by all instances of compliant Producers as well as the semantics required both of the service and its Consumers. The WSDL documents provide details for each of the operations and XML messages exchanged by compliant services. [source PDF, source .DOC]
- XML Schema corresponding to the WSRP Version 1 specification, wsrp_v1_types.xsd. [source]
- WSRP version 1 portTypes, wsrp_v1_interfaces.wsdl. [source]
- WSRP version 1 bindings, wsrp_v1_bindings.wsdl. [source]
- Update 2003-10: JSR #168 was approved in a final ballot; voting to approve: Apple Computer, Inc., BEA Systems, Borland Software Corporation, Caldera Systems, Cisco Systems, Fujitsu Limited, Hewlett-Packard, IBM, IONA Technologies PLC, Doug Lea Macromedia, Inc., Nokia Networks, Oracle, SAP AG, Sun Microsystems, Inc.
- JSR-000168 Portlet API Specification 1.0 Public Review Draft
- SourceForge Project: Portlet Open Source Trading site (POST). Open source for JSR 168 and WSRP portlet standards. See the news story.
- JSR-000168 Portlet Specification Page
- XML Schema for the Portlet 1.0 deployment descriptor
- Comments: send email to firstname.lastname@example.org
- JSR Public Review Page
- Java Community Process Main Page
- List of Java Specification Requests
- Java Community Process website
- "Introduction to JSR 168 - The Java Portlet Specification." Sun Whitepaper. 19 pages.
- Sample Portlet Code illustrating the use of the JSR 168 specification. From Sun Microsystems.
- Introduction to JSR 168. Overview/Reference document from Developers.sun.com Technical Articles & Tips (July 17, 2003).
- Sun ONE Portal Server Product Page
- "Sun Goes Public With JSR 168, Beta of New Portlet Builder. Specification, Tool Aimed at Standardizing How Developers Pull Content Into Portals." By Elizabeth Montalbano. In CRN (July 17, 2003).
- "Sun Portal Server to Support New Java Specification. Sun ONE Portal Server 6.2 with JSR Support to Ship in September." By James Niccolai. In InfoWorld (July 17, 2003).
- "Sun Updating Portal Server with JSR 168." By Michael Singer. In InternetNews.com (July 17, 2003).
- See also: OASIS Web Services for Remote Portlets TC
- See also: "Web Services for Remote Portals (WSRP)" - Main reference page.