eXo Platform 3.0
Next
eXo Platform 3.0 Reference Guide
Abstract
Welcome to eXo Platform 3.0 Reference Guide. This guide is a complete reference for customization points, and available APIs, for all modules.
eXo JCR Developer Guide
I. eXoJCR
1. Introduction in eXoJCR
JCR (JSR-170) API main concepts
Data model
2. Why use JCR?
What is JCR?
Why use JCR?
What does eXo do?
Further Reading
3. eXo JCR Implementation
Related Documents
How it works
Workspace Data Model
4. Advantages of eXo JCR
Advantages for application developers:
Advantages for managers
5. Compatibility Levels
Introduction
Level 1
Level 2
Optional features
6. Using JCR
1 Using eXo JCR in an application
Obtaining a Repository object
JCR Session common considerations
JCR Application practices
Simplifying the management of a multi-workspace application
Reusing SessionProvider
7. JCR Extensions
JCR Service Extensions
Concept
Implementation
Configuration
Related Pages
8. eXo JCR Application Model
9. NodeType Registration
Interfaces and methods
ExtendedNodeTypeManager
NodeTypeValue
NodeDefinitionValue
PropertyDefinitionValue
ItemDefinitionValue
Node type registration
Run time registration from xml file.
Run time registration using NodeTypeValue.
Changing existing node type
Removing node type
Practical How to
Adding new PropertyDefinition
Adding new child NodeDefinition
Changing or removing existing PropertyDefinition or child NodeDefinition
Changing the list of super types
10. Registry Service
Concept
The API
Configuration
11. Namespace altering
Adding new namespace
Changing existing namespace
Removing existing namespace
12. Node Types and Namespaces
Introduction
Node Types definition
Namespaces definition
13. eXo JCR configuration
Related documents
Portal and Standalone configuration
JCR Configuration
Repository service configuration (JCR repositories configuration)
Repository configuration:
Workspace configuration:
Workspace data container configuration:
Value Storage plugin configuration (for data container):
Initializer configuration (optional):
Cache configuration:
Query Handler configuration:
Lock Manager configuration:
14. Multilanguage support in eXo JCR RDB backend
Introduction
Oracle
DB2
MySQL
PostgreSQL
15. Search Configuration
XML Configuration
Configuration parameters
Global Search Index
Global Search Index Configuration
Customized Search Indexes and Analyzers
Indexing Adjustments
IndexingConfiguration
Indexing rules
Indexing Aggregates
Property-Level Analyzers
Advanced features
16. JCR Configuration persister
Idea
Usage
17. JDBC Data Container Config
Introduction
Multi-database Configuration
Single-database configuration
Configuration without DataSource
Dynamic Workspace Creation
Simple and Complex queries
Forse Query Hints
Notes for Microsoft Windows users
18. External Value Storages
Introduction
Tree File Value Storage
Simple File Value Storage
Content Addressable Value storage (CAS) support
19. Workspace Data Container
20. REST Services on Groovy
Concept
Usage
21. Configuring JBoss AS with eXo JCR in cluster
Launching Cluster
Deploying eXo JCR to JBoss As
Configuring JCR to use external configuration
Requirements
Environment requirements
Configuration requirements
22. JBoss Cache configuration
JBoss cache configuration for indexer, lock manager and data container
JGroups configuration
Shipped JBoss Cache configuration templates
Data container template
Lock manager template
Query handler (indexer) template
23. LockManager configuration
Introduction
LockManagerImpl
CacheableLockManagerImpl
Configuration
Simple JbossCache Configuration
Template JBossCache Configuration
Data Types in Different Databases
24. QueryHandler configuration
How does it work?
Configuration
Common requirements
Query-handler configuration
JBoss-Cache template configuration
25. JBossTransactionsService
Introduction
Configuration
26. TransactionManagerLookup
Configuration
27. JCR Query Usecases
Intro
Query Lifecycle
Query Creation and Execution
Query Result Processing
Scoring
Query result settings
Type Constraints
Property Constraints
Path Constraint
Ordering specifing
Fulltext Search
Indexing rules and additional features
Query Examples
SetOffset and SetLimit
Finding All Nodes
Finding Nodes by Primary Type
Finding Nodes by Mixin Type
Property Comparison
LIKE Constraint
Escaping in LIKE Statements
NOT Constraint
AND Constraint
OR Constraint
Property Existence Constraint
Finding Nodes in a Case-Insensitive Way
Date Property Comparison
Node Name Constraint
Multivalue Property Comparison
Exact Path Constraint
Child Node Constraint
Finding All Descendant Nodes
Sorting Nodes by Property
Ordering by Descendant Nodes Property (XPath only)
Ordering by Score
Ordering by Path or Name
Fulltext Search by Property
Fulltext Search by All Properties in Node
Ignoring Accent Symbols. New Analyzer Setting.
Finding nt:file node by content of child jcr:content node
Changing Priority of Node
Removing Nodes Property From Indexing Scope
Regular Expression as Property Name in Indexing Rules
High-lighting Result of Fulltext Search
Searching By Synonim
Checking the spelling of Phrase
Finding Similar Nodes
Tips and tricks
XPath queries containing node names starting with a number
28. Searching Repository Content
Introduction
Bi-directional RangeIterator (since 1.9)
Fuzzy Searches (since 1.0)
SynonymSearch (since 1.9)
High-lighting (Since 1.9)
DefaultXMLExcerpt
DefaultHTMLExcerpt
How to use it
SpellChecker
How do I use it?
Similarity (Since 1.12)
29. Fulltext Search And Affecting Settings
Property content indexing
Lucene Analyzers
How are different properties indexed?
Fulltext search query examples
Different analyzers in action
30. WebDAV
Related documents
Introduction
Configuration
Screenshots
MS Internet Explorer
Dav Explorer
Xythos Drive
Microsoft Office 2003
Ubuntu Linux
Comparison table of WebDav and JCR commands
Restrictions
Windows 7
Microsoft Office 2010
31. FTP
Introdution
Configuration Parameters
command-port:
data-min-port & data-max-port
system
client-side-encoding
def-folder-node-type
def-file-node-type
def-file-mime-type
cache-folder-name
upload-speed-limit
download-speed-limit
timeout
32. eXo JCR Backup Service
Concept
How it works
Implementation details
Work basics
Configuration
Usage
Performing a Backup
Performing a Restore
Repository and Workspace initialization from backup
Scheduling (experimental)
Restore existing workspace or repository
Restore a workspace or a repository using original configuration
Backup set portability
33. HTTPBackupAgent and backup client
Introduction
HTTPBackupAgent
HTTPBackupAgent methods
HTTPBackupAgent Configuration
Backup Client
Backup Client Usage
Building application
Running application
Getting information about backup service
Starting full backup
Starting full and incremental backup on a single workspace
Getting information about the current backups (in progress)
Getting information about the current backup by 'backup_id'
Stopping backup by "backup_id"
Getting information about the completed (ready to restore) backups
Restoring to workspace
Getting information about the current restore
Restoring workspace and remove exists workspace
Restoring workspace from backup set
Restoring workspace from backup set and remove exists workspace
Restoring workspace with original configuation
Restoring workspace with original configuation and remove exists workspace
Restoring workspace from backup set with original configuation
Restoring workspace from backup set with original configuation and remove exists workspace
Restoring repository
Restoring repository and remove exists repository
Restoring repository from backup set
Restoring repository from backup set and remove exists repository
Restoring repository with original configuation
Restoring repository with original configuation and remove exists repository
Restoring repository from backup set with original configuation
Restoring repository from backup set with original configuation and remove exists repository
Full example about creating backup and restoring it for workspace 'backup'
Creating backup
Getting information about current backups
Stopping backup by id
Deleting the workspace "backup" and close opened sessions on this workspace
Restoring the workspace "backup"
Getting information about restore for workspace /repository/backup
Full example about creating backup and restoring it for repository 'repository'
Creating backup
Getting information about current backups
Stopping backup by id
Deleting the repository "repository" and close all opened sessions
Restoring the repository "repository"
Getting information about restore for repository 'repository'
34. Searching index backup
Manual backup (file copy)
Consistency Requirements
JCR Backup Service
35. eXo JCR statistics
Statistics on the Database Access Layer
Statistics on the JCR API accesses
Statistics Manager
36. Access Control
Standard Action Permissions
eXo Access Control
Principal and Identity
ACL
Notes
Example
Java API
37. Access Control Extension
Prerequisites
Overview
Access Context Action
The Invocation Context
Custom Extended Access Manager
Example of a custom Access Manager
38. Link Producer Service
39. Binary Values Processing
Configuration
Usage
Value implementations
40. JCR Resources:
41. JCR Workspace Data Container (architecture contract)
Goals
Concepts
Container and connection
Value storages
Lifecycle
Value storage lifecycle
Requirements
Read operations
Write operations
State operations
Validation of write operations
Consistency of save
Value storages API
Storages provider:
Value storage plugin
Value I/O channel
Transaction support via channel
42. How-to implement Workspace Data Container
Short intro about Workspace data container implementation practices:
Notes on Value storage usage:
43. JCR Performance Tuning Guide
Introduction
JCR Performance and Scalability
Cluster configuration
JCR Clustered Performance
Performance Tuning Guide
JBoss AS Tuning
JCR Cache Tuning
Clustering
II. eXoKernel
44. eXo Kernel
eXo Kernel introduction
45. ExoContainer info
Container hierarchy
46. Service Configuration for Beginners
Objective
Requirements
Services
Configuration File
Execution Modes
Containers
Configuration Retrieval
RootContainer
PortalContainer
StandaloneContainer
Service instantiation
Miscellaneous
Startable interface
Inversion of Control
More Containers
Single Implementation Services
Configuration properties
Configuration Logging
Further Reading
47. Service Configuration in Detail
Objectives
Requirements
Sample Service
Java Class
First configuration file
Init Parameters
Service Access
Parameters
Value-Param
Properties-Param
Object-Param
Collection
External Plugin
Import
System properties
48. Container Configuration
Intro
Kernel configuration namespace
Understanding how configuration files are loaded
Configuration Retrieval
Advanced concepts for the
PortalContainers
System property configuration
Properties init param
Properties URL init param
System Property configuration of the properties URL
Runtime configuration profiles
Profiles activation
Profiles configuration
Component request life cycle
Component request life cycle contract
Request life cycle
When request life cycle is triggered
49. Inversion Of Control
Overview
How
Injection
Side effects
50. Services Wiring
Overview
Portal Instance
Introduction to the XML schema of the configuration.xml file
Configuration retrieval and log of this retrieval
51. Component Plugin Priority
52. Understanding the ListenerService
Objectives
What is the ListenerService ?
How does it work?
Registering a listener
Triggering an event
How to configure a listener?
Concrete Example
53. Initial Context Binder service
API
Configuration
54. Job Scheduler Service
What is Job Scheduler?
Where is Job Scheduler Service used in eXo Products?
How does Job Scheduler work?
How can Job Scheduler Service be used in Kernel?
Samples
Reference
55. eXo Cache
Basic concepts
eXo Cache extension
eXo Cache based on JBoss Cache
Configuring the ExoCacheFactory
Adding specific configuration for a cache
Adding a cache creator
Defining a cache
56. TransactionService
Base information
57. JNDI naming
Prerequisites
How it works
JNDI System property initialization
JNDI reference binding
Configuration examples
Recommendations for Application Developers
InitialContextInitializer API
58. Logs configuration
Introdution
Logs configuration initializer
Configuration examples
Log4J
JDK Logging
Commons Logging SimpleLogss
Tips and Troubleshooting
JBoss tips
Other tips
59. Manageability
Introduction
Managed framework API
Annotations
JMX Management View
JMX Annotations
Example
CacheService example
III. eXoCore
60. eXo Core
eXo Core introduction
61. Database Creator
About
API
A configuration examples
An examples of a DDL script
62. Security Service
1 Overview
1 Framework
1.1 ConversationState and ConversationRegistry
1.1 Authenticator
Usage
JAAS login module
1.1 Predefinded JAAS login modules
1.1 J2EE container authentication
63. Spring Security Integration
Introduction
Installation
Configuration
JAAS disabling
Enabling spring security
security-context.xml
Login portlet example
Building the portlet
Setting up the login portal page
Customization of portal login and logout urls
A look at the login page
Integration strategies
Replication
Integration with eXo portal
Security context propagation to portlets
Portal side filter
Portlet side filter
Conclusion
64. Organization Service
Overview
Organizational Model
User
Group
Membership
Related articles and how-tos
65. Organization Service Initializer
66. Organization Listener
Overview
Writing your own listeners
UserEventListener
GroupEventListener
MembershipEventListener
Registering your listeners
67. Update ConversationState when user's Membership changed
68. DB Schema creator service (JDBC implementation)
69. Database Configuration for Hibernate
Generic configuration
Example DB configuration
Registering custom Hibernate XML files into the service
70. LDAP Configuration
Overview
Quickstart
Configuration
Connection Settings
Organization Service Configuration
Advanced topics
Automatic directory population
Active Directory sample configuration
OpenLDAP dynlist overlays
IV. eXoWS
71. eXo Web Services
eXo Web Services introduction
72. Introduction to the Representational State Transfer (REST)
Introduction
73. RestServicesList Service
Overview.
Usage
HTML format
JSON format
74. Groovy Scripts as REST Services
Overview
Loading script and save it in JCR
Instantiation
Deploying newly created Class as RESTful service
Script Lifecycle Management
Getting node UUID example
Groovy script restrictions
75. Framework for cross-domain AJAX
Motivation
Scheme (how it works)
A Working Sequence:
How to use it
V. Frequently Asked Question
76. JCR FAQ
Kernel
What is the best, standardized way to get the instance of a service ?
JCR
JCR core
JCR extensions
WebDAV
VI. eXo JCR with GateIn
77. How to extend my GateIn instance?
Introduction
Overview
Motivations
Prerequisites
Removing all the hard coded portal container name (i.e. "portal")
Removing all the hard coded rest context name (i.e. "rest")
Removing all the hard coded realm name (i.e. "exo-domain")
Making your Http Filters compatible
Making your HttpServlets compatible
Making your HttpSessionListeners compatible
Use init tasks if you need a PortalContainer to initialize an Http Filter or an HttpServlet
Making your LoginModules compatible
Avoiding
static
modifier on component dependency
Avoid component initialization based on component dependency in the constructor
FAQ
What has changed since the previous versions?
What is the main purpose of a
portal extension
?
What is the main purpose of the
starter
?
How a portal and a portal container are related?
How to define and register a
PortalContainerDefinition
?
How the platform interprets the dependency order defined into the PortalContainerDefinition?
How to change the ServletContext name, the realm name and/or the rest context name of my portal without using a PortalContainerDefinition?
How to add new configuration file to a given portal from a war file?
How to create/define a portal extension?
How to deploy a portal extension?
How to create/define a new portal?
How to deploy a new portal?
How to import properly a configuration file using the prefix "war:"?
How to avoid duplicating configuration files just to rename a simple value?
How to add or change a Repository and/or a Workspace?
How to add new ResourceBundles to my portal?
How to overwrite existing ResourceBundles in my portal?
How to replace a groovy template of my portal?
How to add new Portal Configurations, Navigations, Pages or Portlet Preferences to my portal?
How to add new Http Filters to my portal without modifying the portal binary?
How to add new
HttpSessionListeners
and/or
ServletContextListeners
to my portal without modifying the portal binary?
How to add new
HttpServlet
to my portal without modifying the portal binary?
How to override or add a Context Parameter to my portal without modifying the portal binary?
Where can I found an example of how to extend my portal?
How to deploy the sample extension?
Where can I find an example of how to create a new portal?
How to deploy the sample portal?
I get "java.lang.IllegalStateException: No pre init tasks can be added to the portal container 'portal', because it has already been initialized." what can I do to fix it?
Recommendations
Don't ship your configuration files with your jar files?
Using a dedicated workspace/repository for your extension?
78. How to use AS Managed DataSource under JBoss AS
Configurations Steps
Declaring the datasources in the AS
Do not let eXo bind datasources explicitly
GateIn Reference Guide
1. Introduction
Related Links
2. Configuration
Database Configuration
Overview
Configuring the database for JCR
Configuring the database for the default identity store
E-Mail Service Configuration
Overview
Configuring the outgoing e-mail account
3. Portal Development
Skinning the portal
Overview
Skin Components
Skin Selection
Skins in Page Markups
The Skin Service
The Default Skin
Creating New Skins
Tips and Tricks
Portal Lifecycle
Overview
Application Server start and stop
The Command Servlet
Default Portal Configuration
Overview
Configuration
Portal Default Permission Configuration
Overview
Overwrite Portal Default Permissions
Portal Navigation Configuration
Overview
Portal Navigation
Group Navigation
User Navigation
Tips
Internationalization Configuration
Overview
Locales configuration
ResourceBundleService
Navigation Resource Bundles
Portlets
Translating the language selection form
RTL (Right To Left) Framework
Groovy templates
Stylesheet
Images
Client side JavaScript
XML Resources Bundles
Motivation
XML format
Portal support
JavaScript Inter Application Communication
Overview
Library
Syntax
Example of Javascript events usage
Upload Component
Upload Service
Deactivation of the Ajax Loading Mask Layer
Purpose
Synchronous issue
JavaScript Configuration
4. Portlet development
Portlet Primer
JSR-168 and JSR-286 overview
Tutorials
5. Gadget development
Gadgets
Existing Gadgets
Create a new Gadget
Remote Gadget
Gadget Importing
Gadget Web Editing
Gadget IDE Editing
Dashboard Viewing
Setup a Gadget Server
Virtual servers for gadget rendering
Configuration
6. Authentication and Identity
Predefined User Configuration
Overview
Plugin for adding users, groups and membership types
Membership types
Groups
Users
Plugin for monitoring user creation
Authentication Token Configuration
What is Token Service?
Implementing the Token Service API
Configuring token services
PicketLink IDM integration
Configuration files
Organization API
Accessing User Profile
SSO - Single Sign On
Overview
CAS - Central Authentication Service
JOSSO
OpenSSO - The Open Web SSO project
SPNEGO
7. Web Services for Remote Portlets (WSRP)
Introduction
Level of support in GateIn 3.1
Deploying GateIn's WSRP services
Considerations to use WSRP when running GateIn on a non-default port or hostname
Considerations to use WSRP with SSL
Making a portlet remotable
Consuming GateIn's WSRP portlets from a remote Consumer
Consuming remote WSRP portlets in GateIn
Overview
Configuring a remote producer walk-through
Configuring access to remote producers via XML
Examples
Consumers maintenance
Modifying a currently held registration
Consumer operations
Erasing local registration data
Configuring GateIn's WSRP Producer
Overview
Default configuration
Registration configuration
WSRP validation mode
8. Advanced Development
Foundations
GateIn Kernel
Configuring services
Configuration syntax
InitParams configuration object
Configuring a portal container
GateIn Extension Mechanism, and Portal Extensions
Running Multiple Portals
eXo Platform 3.0 - Content Functions
1. Preface
Get Started with eXo Content
Package
Package WCM standalone version - Tomcat bundle
Package WCM with workflow enabled - Tomcat bundle
Make WCM EAR packages to run with jBoss
2. Portlets
Content Detail
Available preferences
Sample configuration
Content List
Available preferences
Sample Configuration
Search
Available preferences
Sample configuration
Explorer
Available preferences
Example of configuration
Administration
Available preferences
Sample Configuration
Fast Content Creator
Available preferences
Sample Configuration
3. Configuration
Drives
Fields
Example of configuration
Publication
component configuration
external-component-plugins configuration
Example
Deployment
Fields
Example of configuration
Taxonomies
Fields
Sample Configuration
Nodetypes
Fields
Examples Nodetype configuration
Views
Fields
Example of configuration
Templates
Application template
Nodetype template
4. Inside WCM Templates
Content types
Dialog
View
List of Contents
Folder based Template
Category tree Template
5. Inside WCM Explorer
CSS
Javascript
CKEditor
6. Extensions
REST Services
REST Overview
Restful Web Service
UI Extensions
Overview
How to add your own tab in ECM Administration
Authoring Extension
Extended Publication Plugin
Publication Manager
7. Java Services
TaxonomyService
LinkManager
PublicationManager
WCMComposer
NewFolksonomy
ApplicationTemplateManager
NodeFinder
JodConverter
8. FAQ
How to deploy a workflow?
Deploy a workflow inside a
.war
file
Deploy a workflow inside a
.jar
file
eXo Platform 3.0 - CMIS Developer Guide
1. Introduction
About CMIS
About xCMIS
About eXo CMIS
2. CMIS specification
3. xCMIS project
4. CMIS features
CMIS Domain Model
CMIS Services
Integration with eXo WCM
JCR namespaces and nodetypes
WCM drives as CMIS Repositories
WCM Symlinks
Modify WCM via CMIS
CMIS search
5. CMIS Usage code examples
Login to repository
Listing of documents (folder, files)
Read document properties and content-stream
Search of data and syntax examples
Modification of document properties or content
6. References
eXo Platform 3.0 - CMIS Administrator Guide
1. Introduction
CMIS Specification
xCMIS project
eXo CMIS
2. Configuration
CMIS Configuration
Required nodetypes and namespaces in JCR
Authenticator and organization service configuration
CMIS search and index
The CMIS Relational View
Query Capabilities
Configuration
Index atomicity and durability
3. Service JARs
4. Miscellaneous and Tips
5. Links
eXo Platform 3.0 - Collaboration Functions
1. Prerequisites
2. Applications
Portlets
Calendar Portlet
Chatbar Portlet
Chat Portlet
Contact Portlet
Mail Portlet
RSSreader Portlet
Gadgets
Eventslist
Taskslist
Messageslist
3. Configurations
Components in eXo Collaboration Configuration
CalendarService
HistoryImpl
XMPPMessenger
DefaultPresenceStatus
ContactService
External Component Plug-ins
Calendar Configuration
AddActionsPlugin
Chat Configuration
Contact Configuration
Content Configuration
Mail Configuration
Social Integration Configuration
eXo Chatserver Configuration
Openfire Configuration
System Configuration
AS configuration
4. Developer reference
Extension points
ContentDAO
ContactLifeCycle
Transport
EventLifeCycle
Public REST APIs
Calendar application
Mail application
Chat application
eXo Platform 3.0 - Knowledge Functions
1. Prerequisites
2. Applications
Portlets
Forum Portlet
Answers Portlet
FAQ Portlet
Polls Portlet
Gadgets
Overview
Preferences
Links to used REST services
3. Configuration
Components
Components of eXo Knowledge
Components of Forum
Components of Answers
Components of Polls
External-component-plugin
Init data configuration
Roles Configuration
ProfileProvider Configuration
Forum Configuration
Answer Configuration
4. Developer reference
Extension points
ForumEventLifeCycle
AnswerEventLifeCycle
BBCodeRenderer
Internal API
Forum application
Answers application
Polls application
FAQ Template Configuration
Configuration plug-in
How to change look and feel
API provided by the UIComponent (UIViewer.java)
eXo Platform 3.0 - Social Functions
1. Applications
List of Portlets in Social
List of Gadgets in Social
Activity Stream
Social RSS Reader
My Connections
My Spaces
2. Configuration
Components
ActivityManager
SpaceService
IdentityManager
ProfileConfig
ServiceProviderStore
External component plugins
MentionsProcessor
PortletPreferenceRequiredPlugin
SpaceApplicationConfigPlugin
AddNodeTypePlugin
RelationshipManager
SpaceIdentityProvider
SpaceApplicationHandler
ExoPeopleService
Space Service
Description
Components configuration
External plug-in configuration
Activity Manager
Description
Component plug-in configuration
External plug-in configuration
Identity Manager
Description
Component plug-in configuration
OpenSocial Rest Context Configuration
Description
Component plug-in configuration
Spaces Template configuration
Configure the Oauth 2 legged scenario
Generate the certificates
Configure the property file
3. Developers References
UI Extensions
About Activity Plug-in
Create the activity plug-in
Overridable Components
Public Java APIs
ActivityManager
IdentityManager
RelationshipManager
SpaceService
Public REST APIs
Activities REST service
Apps REST service
Identity REST service
Linkshare REST service
People REST Service
Sample code/tutorial
Activity Stream
People
Spaces
Open Social
Space widget tutorial
Public Javascript APIs
Next