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 . |