The OASIS Web Services for Remote Portlets (WSRP) Specification recently approved as an OASIS Standard is now supported by an open source WSRP4J project organized through the Apache Software Foundation. WSRP "defines a standard for interactive, presentation-oriented web services. It simplifies integration of remote applications/content into portals so that portal administrators can pick from a rich choice of services and integrate it in their portal without programming effort. As a result, WSRP becomes the means for content and application providers to provide their services to organizations running portals in a very easily consumable form."
One of several projects in the Apache Web Services area, WSRP4J is a technology donated by IBM "designed to facilitate quick adoption of the WSRP standard by content and application providers and portal vendors. WSRP4J provides the WSRP4J Producer, which allows implementing such WSRP compliant services based on a free, open source software stack consisting of Tomcat, Axis and WSRP4J which in turn includes Pluto, the JSR 168 reference implementation. In addition, the WSRP4J project provides a generic proxy portlet written to the Portlet API, the WSRP4J Consumer. The WSRP4J Project provides two different provider components as well as two WSRP consumers. Each of these components can be installed separately and has different prerequisites."
WSRP4J Project Overview
"Integration of content and application into portals has been a task requiring significant custom programming effort. Portal vendors or organizations running portals had to write special adapter portlets to allow portals to communicate with the different applications and content providers to accommodate a variety of interfaces and protocols. The OASIS Web Services for Remote Portlets (WSRP) standard simplifies integration of remote applications/content into portals so that portal administrators can pick from a rich choice of services and integrate it in their portal without programming effort. As a result, WSRP becomes the means for content and application providers to provide their services to organizations running portals in a very easily consumable form."
"The OASIS WSRP standard defines pluggable, user-facing, interactive web services with a common, well-defined interface and protocol for processing user interactions and providing presentation fragments suitably for aggregation by portals. WSRP standardizes web services at the presentation layer on top of the existing web services stack, builds on the existing web services standards and will leverage additional web services standards efforts, such as security efforts now underway, as they become available. The WSRP interfaces are defined in the Web Services Description Language (WSDL). In addition, WSRP defines metadata for self-description for publishing and finding WSRP services in registries. All WSRP services are required to implement a SOAP binding and optionally may support additional bindings."
"The Apache WSRP4J open source project was initiated by IBM to facilitate quick adoption of the WSRP standard by content and application providers and portal vendors. They can use WSRP4J as a platform for developing and hosting WSRP compliant web services. The OASIS WSRP standard will enable thousands of portals to aggregate content from tens of thousands of content and application providers offering hundreds of thousands of user-facing, pluggable web services for millions of end users/devices. The developers hope the WSRP4J project will kick start broad adoption of the WSRP standard and result in a large number of cool WSRP services running on free, open source Apache software."
"In the definition of the WSRP standard and the JSR 168, the OASIS Technical Committee and the JSR 168 Expert group have closely collaborated to make sure that that both fit together well in portal architectures. JSR 168 compliant portlets can be exposed as WSRP compliant web services and conversely, WSRP services can be integrated through generic portlet proxies written to the Portlet API..."
The WSRP model involves several actors in a "conversation between Producers and Consumers on behalf of End- Users (clients of the Consumer). Producers are presentation-oriented web services that host Portlets which are able to render markup fragments and process user interaction requests. Consumers use these web services to present the generated markup to End-Users and manage the user's interaction with the markup... Portlets are hosted by Producer web services and generate markup as well as processing interactions with that markup. In general a Portlet includes both logic conforming to some specification of the Producer's environment and a particular configuration of any settings or properties the Portlet exposes. Producers are modeled as containers of Portlets. The Producer provides a set of web service interfaces, including Self Description, Markup (a required interface used to request and interact with markup fragments), Registration, and Portlet Management... A Consumer is an intermediary system that communicates with presentation-oriented web services (i.e. Producers and the Portlets they host) on behalf of its users. It gathers and aggregates the markup delivered by the Portlets and presents the aggregation to the End-User. Because of this intermediary role, Consumers are often compared to 'message switches' that route messages between various parties. One typical Consumer is a portal, which mediates the markup and the interaction with this markup between End-Users and presentation-oriented web 20 services... The main purpose of a Consumer that aggregates content from various Producers/Portlets is the preparation and presentation of markup to an End-User. In addition, the Consumer needs to manage the processing of interactions with that markup in order to properly correlate the interactions with the, potentially stateful, environment that produced the markup..." [from the August 2003 Version 1.0 spec]
"In WSRP4J the producer and consumer are provided with a very modular architecture enabling an easy exchange of module implementations. All modules excel by interfaces based on the WSRP object model hiding the runtime environment's (portal's) object model and thus gaining independence of changes in the environment's implementation or design."
"The Producer Components include a WSRPEngine, ConsumerRegistry, HandleGenerator, WSRP Object Model, Provider, Portlet Invoker, Description Handler, PortletPool, Portlet State Manager, Session Handler, and URL Composer. "The WSRPEngine is the WSRP implementation endpoint. This class must be deployed in the app server (Tomcat) as a web service. The WSRPEngine implements the WSRP protocol specific ports (interfaces) and does the corresponding protocol handling. There are four WSRP ports:(1) 'Markup' deals with Portlet invocation and Session handling; (2) 'PortletManagement' covers lifecycle, descriptions and properties of portlets; (3) 'Registration' enables a consumer to register at the producer; (4) 'ServiceDescription' - via this port a producer can describe itself and the services it provides..."
"The Consumer Components include a Protocol Handler, WSRP Object Model, PortletDriver, WSRP service, ProducerRegistry, SessionHandler, URLHandler, PortletRegistry, and UserRegistry. The Protocol Handler is a standalone Swing based application that implements the consuming portal and the browser functionality. It aggregates the integrated WSRP portlets and forwards all invocations together with relevant context and request information to the remote WSRP service. The Swing consumer thereby uses the ConsumerEnvironment to collect all data required for a WSRP call..." [adapted from the WSRP4J website and the v1 specification]
wsrp4j Mailing Lists
The wsrp4j project has two mailing lists:
- The 'Users' list ws-wsrp4j-user is "for developers that are using wsrp4j in their own projects to ask questions, share knowledge, and discuss issues related to using wsrp4j." One may subscribe by sending email to firstname.lastname@example.org.
- The 'Developers' list ws-wsrp4j-dev is "the list where participating developers of the wsrp4j project meet and discuss issues, code changes/additions, etc." One may subscribe by sending email to email@example.com.
- WSRP4J Project website
- WSRP4J Architecture:
- WSRP in the News
- CVS area 'ws-wsrp4j'
- wsrp4j email lists
- Contact: Julie MacNaught (IBM Research).
- JSR 168 Portlet Specification. See JSR-000168 Portlet API Specification 1.0 Proposed Final Draft 2.
- "JSR 168 Portlet API Specification 1.0 Released for Public Review."
- Jetspeed. "Jetspeed is an Open Source implementation of an Enterprise Information Portal, using Java and XML."
- Pluto. The purpose of the Pluto subproject is to create and maintain a reference implementation for the Java Portlet specification as defined in JSR 168. JetSpeed is based upon this portlet container implementation.
- Tomcat. "Apache Tomcat is the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies."
- Apache Web Services Project
- Apache Software Foundation
- "Plumtree Ships Products to Fully Support WSRP and Proposed JSR 168 Portlet Standards."
- "Web Services for Remote Portlets Specification Approved as OASIS Standard."
- Web Services for Remote Portlets Specification. WSRP Version 1.0. OASIS Standard, approved August 2003.
- WSRP Overview. From the OASIS TC.
- OASIS Web Services for Remote Portlets TC website
- "Web Services for Remote Portals (WSRP)" - Local reference page.