The producer can be viewed as a container environment in which remote portlets reside and execute. The Web service interfaces exposed by the producer allow a WSRP-compliant consumer to discover the capabilities and offerings of the producer and establish a contract with the producer.

Note: The remote components must conform to the JSR 168 standard.

The WSRP specification defines four interfaces:

Note: The ATG WSRP implementation does not implement the Portlet Management interface; third-party consumers that expect it (specifically Cloning operations) may not function properly.

A simple example of how these interfaces are used is:

The WSRP specification also defines the data model. The subset of this model that does not change frequently per request or per session is persisted in the GSA repository. The persistent WSRP information in ATG producer includes:

A single producer repository exists for persisting producer-specific information, structured so that it has almost a one-to-one mapping with the structure of the WSRP data-types. Other items are handled by WSRP services located at /atg/wsrp in Nucleus.

Service Description

The service description provides information about the producer to a consumer that requests it. The information can include:

Each portlet offered by the producer is associated with a detailed PortletDescription containing the portlet’s meta-data and capability information.

The ATG producer is shipped with a service description that includes information for the out-of-the-box capabilities and meta-data supported in the ATG producer environment; however it does not include any portlet descriptions. Customers add portlets by importing them using the WSRP administration UI (see Importing Portlet Descriptions later in this chapter).

Note: The provided service description can be customized through the repository either directly or using the ACC; however this is not recommended. Customized information may be inconsistent with the underlying functionality and features. In particular, do not modify the following parts of the service description:

  • RegistrationPropertyDescription

  • CustomModeDescription

  • CustomWindowStateDescription

  • RequiresInitCookie. Do not change to none.

The following table shows the Contact properties required for registration, which are included in the defaults shipped with the service description:

Property Name

Type

Label

Label XmlLang

contact.prefix

xsd:string

Name Prefix

en_US

contact.givenName

xsd:string

Given Name

en_US

contact.familyName

xsd:string

Family Name

en_US

contact.middleName

xsd:string

Middle Name

en_US

contact.suffix

xsd:string

Name Suffix

en_US

contact.company

xsd:string

Company Name

en_US

contact.title

xsd:string

Title

en_US

contact.postal.name

xsd:string

Address

en_US

contact.postal.street

xsd:string

Street

en_US

contact.postal.city

xsd:string

City

en_US

contact.postal.stateprov

xsd:string

State/Province

en_US

contact.postal.postalcode

xsd:string

Postal Code

en_US

contact.postal.country

xsd:string

Country

en_US

contact.postal.organization

xsd:string

Organization Name (Postal)

en_US

contact.online.email

xsd:string

Email

en_US

contact.online.uri

xsd:string

URL

en_US

contact.telecom.telephone.intcode

xsd:string

Telephone (International Code)

en_US

contact.telecom.telephone.loccode

xsd:string

Telephone (Local Code)

en_US

contact.telecom.telephone.number

xsd:string

Telephone (Number)

en_US

contact.telecom.telephone.ext

xsd:string

Telephone (Extension)

en_US

contact.telecom.telephone.comment

xsd:string

Telephone (Comments)

en_US

contact.telecom.fax.intcode

xsd:string

Fax (International Code)

en_US

contact.telecom.fax.loccode

xsd:string

Fax (Local Code)

en_US

contact.telecom.fax.number

xsd:string

Fax (Number)

en_US

contact.telecom.fax.ext

xsd:string

Fax (Extension)

en_US

contact.telecom.fax.comment

xsd:string

Fax (Comments)

en_US

contact.telecom.mobile.intcode

xsd:string

Mobile (International Code)

en_US

contact.telecom.mobile.loccode

xsd:string

Mobile (Local Code)

en_US

contact.telecom.mobile.number

xsd:string

Mobile (Number)

en_US

contact.telecom.mobile.ext

xsd:string

Mobile (Extension)

en_US

contact.telecom.mobile.comment

xsd:string

Mobile (Comments)

en_US

contact.telecom.pager.intcode

xsd:string

Pager (International Code)

en_US

contact.telecom.pager.loccode

xsd:string

Pager (Local Code)

en_US

contact.telecom.pager.number

xsd:string

Pager (Number)

en_US

contact.telecom.pager.ext

xsd:string

Pager (Extension)

en_US

contact.telecom.pager.comment

xsd:string

Pager (Comments)

en_US

The service description also includes the OfferedPortlets property, a set of portlet descriptions describing the metadata and capabilities for each Portlet offered by the producer.

Do not modify the PortletDescription directly in the repository; use the WSRP administration tool for modifications.

Registration

The optional Registration interface is a way for consumers to provide information to the producer, which uses it to establish a unique identity for and relationship with the consumer. Users can:

Consumers must provide contact details as registration properties (see the Service Description section). Registration requests that fail to provide this information are rejected. Using the information, a Consumer-Contact instance is created in the ATG environment. The contact information is associated with a registered consumer and has dynamic properties analogous to the User-Profile properties of the Oracle Commerce Personalization module. The producer is packaged with a default set of Contact RegistrationProperties customers can modify, similar to customizing the User-Profile.

Markup

The required Markup interface includes two methods for obtaining markup fragments and performing actions on remote portlets: getMarkup and performBlockingInteraction. See the WSRP specification for details on these methods.

One producer task is to smoothly interact with the JSR168 container and perform render and action requests on the target JSR168 portlet. However, there are fundamental differences between the way a JSR168 container is invoked from a conventional portal application and the way it is invoked from the producer environment:

To handle these potential issues, the ATG producer uses a simulated J2EE FilterChain, which is based on the Nucleus service. The FilterChain and Filter components can be found in the Producer Module at /atg/wsrp/producer/filter.

The Producer executes the following scenario:

The producer is shipped with preconfigured filters in the WSRP servlet filter chain. Customers can add new Filters for specific functionality such as UserContext handling. Do not remove any filters. The FilterChain must always include the first (head) and last (tail) filters. The head filter initializes the request/response with WSRP specific information, and the tail filter delegates the request to JSR168 Container as a Render request. An ActionFilter must also be present, to identify Action requests and appropriately invoke the JSR168 Container.


Copyright © 1997, 2016 Oracle and/or its affiliates. All rights reserved. Legal Notices