public interface CRXModule
CRXModuleinterface defines the API which must be implemented by modules extending the functionality of the repository. Modules are installed into the repository either by configuration or by calling the
The life cycle of a module encompasses six stages:
Startingand (2) registering the module internally. These operations are implemented by the repository.
stopped, the module may operate as implemented. A module should not operate before being started and should cease operating after having been stopped.
stoppingthe module. After having been stopped, the module should not operate anymore.
When the repository is shutting down, all modules which are still installed are uninstalled, that is unregistered and stopped.
A module configured with the the repository configuration file is configured
automatically when the repository is started. Modules are configured in
Module elements nested within the
element. Configuration properties may be set by nested
When the module is installed by the repository, the module's class as
configured in the
Module.class attribute is instantiated and
the configured properties from the nested
param elements are
set JavaBean style.
For the repository to be able to instantiate the module, the module must have a public default constructor. Also the property setter methods must be public and for each property a setter and a getter method must be provided for the parameter configuration to be successfull.
Modules may be installed automatically when the repository is started or manually by the application. To automatically start the modules, they must be configured as described above. To manually install a module, the application is responsible for the instantiation and configuration of the module.
To install, the application will call the
CRXRepository.installModule(javax.jcr.Session, CRXModule) which then
start(CRXSession) method to start the module before
This name is expected to be unique amongst the registered modules and is just used to identify the module. Other than to register the module under this name, the repository does not use it for anything else.
null, non-empty module name.
void start(CRXSession session) throws RepositoryException
This method is called by the repository before registering the module
internally. This means, that while this method is active, this module is
not yet visible by the
If this method fails by throwing a
any resources already acquired must be released. A module failing to
start is also not registered and thus visible. Finally a module failing
to start will never be stopped, that is the
stop() method will
not be called.
This method should only throw a
failing to start. Notably, the implementation should prevent throwing a
logout()method on this
session. Otherwise the repository may behave unexpectedly.
sessionis a shared Session. This means, the Session is not thread safe and may at most be used for concurrent read operations but MUST NOT be used to write to the repository. If the module requires writing to the repository, a new Session MUST be acquired calling the
CRXSession.getSession(String)method on the
session. Such session SHOULD of course be logged out when the module is
CRXSessionto access the system workspace of the repository. This session is shared and MUST NOT be used to write to the repository. Use the
CRXSession.getSession(String)method to get a session to write to the repository.
RepositoryException- May be thrown if the module fails to start.
This method is called after the module has been unregistered. If the module failed to start, this method is never called.
This method is not excpected to throw any exception. Care must be taken
RuntimeExceptions from occurring.
Copyright © 2010 - 2020 Adobe. All Rights Reserved