web portal is a collection of independent web components on a single page. These pluggable user interface components, called portlets, process requests and generate dynamic content from inside portlet containers. Because portlets can obtain data from different data sources, a portal provides users with a unified presentation of views generated from disparate data sources.
For Java developers, Java Portlet Specification (JPS), based on JSR 168, and Web Services for Remote Portlets (WSRP) are standards that help you create and consume portlets. In fact, Oracle provides support for these standards in its Java development tools through the Oracle WebCenter Framework, a Java Server Faces (JSF) and Oracle ADF-based framework that developers can use to embed AJAX-based components and portlets in a JSF application.
Specifically, the Oracle JDeveloper 10.1.3.2 IDE includes a WebCenter pre-configured OC4J that provides a JSR 168 portlet container for developing WSRP 1.0/WSRP 2.0 standards-based portlets. Developers can build portlet applications in JDeveloper 10.1.3.2 and deploy them to the WebCenter Framework or any other portlet container that supports the JSR 168 standard. Subsequently, the developer can consume the portlet in a WebCenter application or any other portal that supports the JSR 168 and WSRP standards by registering a WSRP producer with the application or the portal.
This article walks you through developing of a JSF portlet based on JSR 168 and WSRP 2.0 and running it in the WebCenter Framework. The portlet will use an Oracle database as the data source and rely on a DataTable.
Setting Up the Environment
Install Oracle 10g database including the sample schemas, and select the option for creating an Oracle database instance, ORCL. Using the following SQL *Plus script, create a database example table CATALOG in the OE schema:
CREATE TABLE OE.Catalog(ID VARCHAR(25)
PRIMARY KEY, Journal VARCHAR(25), Publisher VARCHAR(25),
Edition VARCHAR(25), Title Varchar(255), Author Varchar(25));
INSERT INTO OE.Catalog VALUES('catalog1', 'Oracle Magazine',
'Oracle Publishing', 'May-June 2006', 'Tuning Your View Objects', 'Steve Muench');
INSERT INTO OE.Catalog VALUES('catalog2', 'Oracle Magazine', 'Oracle Publishing', 'July-August 2006',
'Evolving Grid Management', 'David Baum');
INSERT INTO OE.Catalog VALUES('catalog3', 'Oracle Magazine', 'Oracle Publishing', 'July-August 2005',
'Tuning Undo Tablespace', 'Kimberly Floss');