Guide to Jetspeed-2 Component Architecture

The Jetspeed-2 architecture is build on a component architecture where as defined by Martin Fowler:

    By the term component, I mean a glob of software that's intended to be used, 
    without change, by application that is out of the control of the writers of 
    the component. By 'without change' I mean that the using application doesn't 
    change the source code of the components, although they may alter the component's 
    behavior by extending it in ways allowed by the component writers.

Jetspeed-2 uses dependency injection as a programming design pattern and architectural model to establish a level of abstraction via a public interface, and to remove dependency on the components' implementation. The architecture unites the components rather than the components linking themselves or being linked together. Dependency injection is a pattern in which responsibility for object creation and object linking is removed from the objects themselves and transferred to a factory. Dependency injection therefore is obviously inverting the control for object creation and linking, and can be seen to be a form of Inversion of Controls(IoC).

Jetspeed-2 and Component Frameworks

Jetspeed-2 leverages the Spring Framework as its default component framework. However, Jetspeed-2 provides an architecture in which the component framework can easily be replaced by alternative component frameworks such as Pico.

Jetspeed-2 component framework assembly is configured and implemented in JetspeedServlet:

The JetspeedServlet is configured in the portal application web.xml to load at startup. The initializeComponentManager method loads the assembly for the given component framework. The default implementation of initializeComponentManager supports the spring framework as a component framework and assembles the xml files located under WEB-INF/assembly to initialize the spring engine. The JetspeedEngine is then constructed with the proper component manager.

  engine = new JetspeedEngine(properties, applicationRoot, config,
      initializeComponentManager(config, applicationRoot, properties));
		

In order to support another component framework, developers should override the initializeComponentManager implementation.

Jetspeed-2 Core Components

Jetspeed-2 Capabilities - Artifact Id: jetspeed-capability
Component Name Description
Capabilities The Capabilities components maps clients to supported mime types and media types. It creates a CapabilityMap that is used through the portal engine to render the portal content for the targetted client.

Jetspeed-2 Component Manager - Artifact Id: jetspeed-cm
Component Name Description
ComponentManager The ComponentManager provides a generic layer of abstraction on top of the component framework being used. The default ComponentManager implementation in Jetspeed-2 is the SpringComponentManager. More information can be found in the ComponentManager documentation.

Jetspeed-2 Deploy Tools - Artifact Id: jetspeed-deploy-tools
Component Name Description
JetspeedDeploy JetspeedDeploy prepares portlet applications prior to being deployed in Jetspeed-2. More information can be found in the JetspeedDeploy documentation.
DeploymentManager The DeploymentManager listens for new portal assets (portlets, decorators) to be deployed. An overview of how deployment works in Jetspeed-2 can be found here.

Jetspeed-2 Portal - Artifact Id: jetspeed-portal
Component Name Description
Pipeline The Pipeline orchestrates the Valve that are performing atomic operation on a Jetspeed-2 request.

Jetspeed-2 Preferences - Artifact Id: jetspeed-prefs
Component Name Description
PreferencesProvider The PreferencesProvider exposes Jetspeed-2 implementation of the java.util.Preferences API.

Jetspeed-2 RDBMS - Artifact Id: jetspeed-rdbms
Component Name Description
ConnectionRepositoryEntry The ConnectionRepositoryEntry exposes Jetspeed-2 implementation of the java.util.Preferences API.
InitablePersistenceBrokerDaoSupport InitablePersistenceBrokerDaoSupport provides data access and persistence support for Jetspeed-2.

Jetspeed-2 Security - Artifact Id: jetspeed-security
Component Name Description
DefaultLoginModule
RdbmsPolicy
Jetspeed-2 default implementation for JAAS services. Jetspeed-2 leverages JAAS as a generic security standard framework to expose security functionality to the portal engine. The JAAS services leverage Jetspeed-2 coarsed grained services for which specific implementations are provided through Jetspeed-2 security SPI.
UserManager
RoleManager
GroupManager
PermissionManager
Coarsed grained security components exposing Jetspeed-2 security management APIs.
UserSecurityHandler
CredentialHandler
GroupSecurityHandler
RoleSecurityHandler
SecurityMappingHandler
Fined grained Jetspeed-2 security SPI components exposing a specific implementation to the Jetspeed-2 security engine. This mechanism provides a flexible framework for supporting multiple security implementation without having to impact the higher level security services.

Jetspeed-2 Search - Artifact Id: jetspeed-search
Component Name Description
SearchEngine SearchEngine provides the integration with the Apache Lucene search engine.
HandlerFactory The HandlerFactory exposes the documents handlers to the SearchEngine.

Jetspeed-2 Statistics - Artifact Id: jetspeed-statistics
Component Name Description
PortalStatistics PortalStatistics exposes the Jetspeed-2 data collection API for data collection and data retrieval.
BatchedStatistics BatchedStatistics is responsible for the batch collection of statistics data given a time to flush period.
AggregateStatistics
StatisticsQueryCriteria
AggregateStatistics interacts with the PortalStatistics component to provide aggregate portal data for a specific event and search criteria provided by StatisticsQueryCriteria.