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 NameDescription
CapabilitiesThe 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 NameDescription
ComponentManagerThe 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 NameDescription
JetspeedDeployJetspeedDeploy prepares portlet applications prior to being deployed in Jetspeed-2. More information can be found in the JetspeedDeploy documentation.
DeploymentManagerThe 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 NameDescription
PipelineThe Pipeline orchestrates the Valve that are performing atomic operation on a Jetspeed-2 request.


Jetspeed-2 Preferences - Artifact Id: jetspeed-prefs
Component NameDescription
PreferencesProviderThe PreferencesProvider exposes Jetspeed-2 implementation of the java.util.Preferences API.


Jetspeed-2 RDBMS - Artifact Id: jetspeed-rdbms
Component NameDescription
ConnectionRepositoryEntryThe ConnectionRepositoryEntry exposes Jetspeed-2 implementation of the java.util.Preferences API.
InitablePersistenceBrokerDaoSupportInitablePersistenceBrokerDaoSupport provides data access and persistence support for Jetspeed-2.


Jetspeed-2 Security - Artifact Id: jetspeed-security
Component NameDescription
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 NameDescription
SearchEngineSearchEngine provides the integration with the Apache Lucene search engine.
HandlerFactoryThe HandlerFactory exposes the documents handlers to the SearchEngine.


Jetspeed-2 Statistics - Artifact Id: jetspeed-statistics
Component NameDescription
PortalStatisticsPortalStatistics exposes the Jetspeed-2 data collection API for data collection and data retrieval.
BatchedStatisticsBatchedStatistics 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.