JBoss.orgCommunity Documentation

Reference Guide / eXo JCR

Java Content Repository and Extension services


I. eXoJCR
1. Introduction in eXoJCR
1.1. JCR (JSR-170) API main concepts
1.1.1. Data model
2. Why use JCR?
2.1. What is JCR?
2.2. Why use JCR?
2.3. What does eXo do?
2.4. Further Reading
3. eXo JCR Implementation
3.1. Related Documents
3.2. How it works
3.3. Workspace Data Model
4. Advantages of eXo JCR
4.1. Advantages for application developers:
4.2. Advantages for managers
5. Compatibility Levels
5.1. Introduction
5.2. Level 1
5.3. Level 2
5.4. Optional features
6. Using JCR
6.1. 1 Using eXo JCR in an application
6.1.1. Obtaining a Repository object
6.1.2. JCR Session common considerations
6.2. JCR Application practices
6.2.1. Simplifying the management of a multi-workspace application
6.2.2. Reusing SessionProvider
7. JCR Extensions
7.1. JCR Service Extensions
7.1.1. Concept
7.1.2. Implementation
7.1.3. Configuration
7.2. Related Pages
8. eXo JCR Application Model
9. NodeType Registration
9.1. Interfaces and methods
9.1.1. ExtendedNodeTypeManager
9.1.2. NodeTypeValue
9.1.3. NodeDefinitionValue
9.1.4. PropertyDefinitionValue
9.1.5. ItemDefinitionValue
9.2. Node type registration
9.2.1. Run time registration from xml file.
9.2.2. Run time registration using NodeTypeValue.
9.3. Changing existing node type
9.4. Removing node type
9.5. Practical How to
9.5.1. Adding new PropertyDefinition
9.5.2. Adding new child NodeDefinition
9.5.3. Changing or removing existing PropertyDefinition or child NodeDefinition
9.5.4. Changing the list of super types
10. Registry Service
10.1. Concept
10.2. The API
10.3. Configuration
11. Namespace altering
11.1. Adding new namespace
11.2. Changing existing namespace
11.3. Removing existing namespace
12. Node Types and Namespaces
12.1. Introduction
12.2. Node Types definition
12.3. Namespaces definition
13. eXo JCR configuration
13.1. Related documents
13.2. Portal and Standalone configuration
13.3. JCR Configuration
13.4. Repository service configuration (JCR repositories configuration)
13.5. Repository configuration:
13.6. Workspace configuration:
13.7. Workspace data container configuration:
13.8. Value Storage plugin configuration (for data container):
13.9. Initializer configuration (optional):
13.10. Cache configuration:
13.11. Query Handler configuration:
13.12. Lock Manager configuration:
13.13. Help application to prohibit the use of closed sessions
14. Multilanguage support in eXo JCR RDB backend
14.1. Introduction
14.2. Oracle
14.3. DB2
14.4. MySQL
14.5. PostgreSQL
15. How to host several JCR instances on the same database instance?
15.1. Concepts
15.2. LockManager configuration
15.3. HibernateService configuration
16. Search Configuration
16.1. XML Configuration
16.2. Configuration parameters
16.3. Global Search Index
16.3.1. Global Search Index Configuration
16.3.2. Customized Search Indexes and Analyzers
16.4. Indexing Adjustments
16.4.1. IndexingConfiguration
16.4.2. Indexing rules
16.4.3. Indexing Aggregates
16.4.4. Property-Level Analyzers
16.4.5. Advanced features
17. JCR Configuration persister
17.1. Idea
17.2. Usage
18. JDBC Data Container Config
18.1. Introduction
18.2. General recommendations for database configuration
18.2.1. DB2 configuration
18.2.2. MySQL configuration
18.2.3. PostgreSQL configuration
18.2.4. MS SQL configuration
18.2.5. Sybase configuration
18.2.6. Oracle configuration
18.3. Multi-database Configuration
18.4. Single-database configuration
18.4.1. Configuration without DataSource
18.4.2. Dynamic Workspace Creation
18.5. Simple and Complex queries
18.6. Forse Query Hints
18.7. Notes for Microsoft Windows users
19. External Value Storages
19.1. Introduction
19.2. Tree File Value Storage
19.3. Simple File Value Storage
19.4. Content Addressable Value storage (CAS) support
19.5. Disabling value storage
20. Workspace Data Container
21. REST Services on Groovy
21.1. Concept
21.2. Usage
22. Configuring JBoss AS with eXo JCR in cluster
22.1. Launching Cluster
22.1.1. Deploying eXo JCR to JBoss As
22.1.2. Configuring JCR to use external configuration
22.2. Requirements
22.2.1. Environment requirements
22.2.2. Configuration requirements
23. JBoss Cache configuration
23.1. JBoss cache configuration for indexer, lock manager and data container
23.2. JGroups configuration
23.3. Allow to share JBoss Cache instances
23.4. Shipped JBoss Cache configuration templates
23.4.1. Data container template
23.4.2. Lock manager template
23.4.3. Query handler (indexer) template
24. LockManager configuration
24.1. Introduction
24.2. LockManagerImpl
24.3. CacheableLockManagerImpl
24.3.1. Configuration
24.3.2. Simple JbossCache Configuration
24.3.3. Template JBossCache Configuration
24.3.4. Data Types in Different Databases
24.3.5. Lock migration from 1.12.x
25. QueryHandler configuration
25.1. Indexing in clustered environment
25.2. Configuration
25.2.1. Query-handler configuration overview
25.2.2. Standalone strategy
25.2.3. Cluster-ready indexing strategies
25.2.4. JBoss-Cache template configuration
25.3. Asynchronous reindexing
25.3.1. On startup indexing
25.3.2. Hot Asynchronous Workspace Reindexing via JMX
25.3.3. Notices
25.4. Advanced tuning
25.4.1. Lucene tuning
26. JBossTransactionsService
26.1. Introduction
26.2. Configuration
27. TransactionManagerLookup
27.1. Configuration
28. RepositoryCreationService
28.1. Intro
28.2. Dependencies
28.3. How it works
28.4. Configuration
28.5. RepositoryCreationService Interface
28.6. Conclusions and restrictions
29. JCR Query Usecases
29.1. Intro
29.2. Query Lifecycle
29.2.1. Query Creation and Execution
29.2.2. Query Result Processing
29.2.3. Scoring
29.3. Query result settings
29.4. Type Constraints
29.5. Property Constraints
29.6. Path Constraint
29.7. Ordering specifing
29.8. Fulltext Search
29.9. Indexing rules and additional features
29.10. Query Examples
29.10.1. SetOffset and SetLimit
29.10.2. Finding All Nodes
29.10.3. Finding Nodes by Primary Type
29.10.4. Finding Nodes by Mixin Type
29.10.5. Property Comparison
29.10.6. LIKE Constraint
29.10.7. Escaping in LIKE Statements
29.10.8. NOT Constraint
29.10.9. AND Constraint
29.10.10. OR Constraint
29.10.11. Property Existence Constraint
29.10.12. Finding Nodes in a Case-Insensitive Way
29.10.13. Date Property Comparison
29.10.14. Node Name Constraint
29.10.15. Multivalue Property Comparison
29.10.16. Exact Path Constraint
29.10.17. Child Node Constraint
29.10.18. Finding All Descendant Nodes
29.10.19. Sorting Nodes by Property
29.10.20. Ordering by Descendant Nodes Property (XPath only)
29.10.21. Ordering by Score
29.10.22. Ordering by Path or Name
29.10.23. Fulltext Search by Property
29.10.24. Fulltext Search by All Properties in Node
29.10.25. Ignoring Accent Symbols. New Analyzer Setting.
29.10.26. Finding nt:file node by content of child jcr:content node
29.10.27. Changing Priority of Node
29.10.28. Removing Nodes Property From Indexing Scope
29.10.29. Regular Expression as Property Name in Indexing Rules
29.10.30. High-lighting Result of Fulltext Search
29.10.31. Searching By Synonim
29.10.32. Checking the spelling of Phrase
29.10.33. Finding Similar Nodes
29.11. Tips and tricks
29.11.1. XPath queries containing node names starting with a number
30. Searching Repository Content
30.1. Introduction
30.2. Bi-directional RangeIterator (since 1.9)
30.3. Fuzzy Searches (since 1.0)
30.4. SynonymSearch (since 1.9)
30.5. High-lighting (Since 1.9)
30.5.1. DefaultXMLExcerpt
30.5.2. DefaultHTMLExcerpt
30.5.3. How to use it
30.6. SpellChecker
30.6.1. How do I use it?
30.7. Similarity (Since 1.12)
31. Fulltext Search And Affecting Settings
31.1. Property content indexing
31.2. Lucene Analyzers
31.3. How are different properties indexed?
31.4. Fulltext search query examples
31.5. Different analyzers in action
32. JCR API Extensions
32.1. "Lazy" child nodes iteration
32.1.1. Concept
32.1.2. API and usage
32.1.3. Configuration
32.1.4. Implementation notices
33. WebDAV
33.1. Related documents
33.2. Introduction
33.3. Configuration
33.4. Screenshots
33.4.1. MS Internet Explorer
33.4.2. Dav Explorer
33.4.3. Xythos Drive
33.4.4. Microsoft Office 2003
33.4.5. Ubuntu Linux
33.5. Comparison table of WebDav and JCR commands
33.6. Restrictions
33.6.1. Windows 7
33.6.2. Microsoft Office 2010
34. FTP
34.1. Introdution
34.2. Configuration Parameters
34.2.1. command-port:
34.2.2. data-min-port & data-max-port
34.2.3. system
34.2.4. client-side-encoding
34.2.5. def-folder-node-type
34.2.6. def-file-node-type
34.2.7. def-file-mime-type
34.2.8. cache-folder-name
34.2.9. upload-speed-limit
34.2.10. download-speed-limit
34.2.11. timeout
35. eXo JCR Backup Service
35.1. Concept
35.2. How it works
35.2.1. Implementation details
35.2.2. Work basics
35.3. Configuration
35.4. RDBMS backup
35.5. Usage
35.5.1. Performing a Backup
35.5.2. Performing a Restore
35.5.3. Repository and Workspace initialization from backup
35.6. Scheduling (experimental)
35.7. Restore existing workspace or repository
35.8. Restore a workspace or a repository using original configuration
35.9. Backup set portability
36. HTTPBackupAgent and backup client
36.1. Introduction
36.2. HTTPBackupAgent
36.2.1. HTTPBackupAgent methods
36.2.2. HTTPBackupAgent Configuration
36.3. Backup Client
36.4. Backup Client Usage
36.4.1. Building application
36.4.2. Running application
36.4.3. Getting information about backup service
36.4.4. Starting full backup
36.4.5. Starting full and incremental backup on a single workspace
36.4.6. Getting information about the current backups (in progress)
36.4.7. Getting information about the current backup by 'backup_id'
36.4.8. Stopping backup by "backup_id"
36.4.9. Getting information about the completed (ready to restore) backups
36.4.10. Restoring to workspace
36.4.11. Getting information about the current restore
36.4.12. Restoring workspace and remove exists workspace
36.4.13. Restoring workspace from backup set
36.4.14. Restoring workspace from backup set and remove exists workspace
36.4.15. Restoring workspace with original configuation
36.4.16. Restoring workspace with original configuation and remove exists workspace
36.4.17. Restoring workspace from backup set with original configuation
36.4.18. Restoring workspace from backup set with original configuation and remove exists workspace
36.4.19. Restoring repository
36.4.20. Restoring repository and remove exists repository
36.4.21. Restoring repository from backup set
36.4.22. Restoring repository from backup set and remove exists repository
36.4.23. Restoring repository with original configuation
36.4.24. Restoring repository with original configuation and remove exists repository
36.4.25. Restoring repository from backup set with original configuation
36.4.26. Restoring repository from backup set with original configuation and remove exists repository
36.5. Full example about creating backup and restoring it for workspace 'backup'
36.5.1. Creating backup
36.5.2. Getting information about current backups
36.5.3. Stopping backup by id
36.5.4. Deleting the workspace "backup" and close opened sessions on this workspace
36.5.5. Restoring the workspace "backup"
36.5.6. Getting information about restore for workspace /repository/backup
36.6. Full example about creating backup and restoring it for repository 'repository'
36.6.1. Creating backup
36.6.2. Getting information about current backups
36.6.3. Stopping backup by id
36.6.4. Deleting the repository "repository" and close all opened sessions
36.6.5. Restoring the repository "repository"
36.6.6. Getting information about restore for repository 'repository'
37. Use external backup tool
37.1. Repository suspending
37.2. Backup
37.3. Repository resuming
38. eXo JCR statistics
38.1. Statistics on the Database Access Layer
38.2. Statistics on the JCR API accesses
38.3. Statistics Manager
39. Checking repository integrity and consistency
39.1. JMX-based consistency tool
40. JTA
41. The JCA Resource Adapter
41.1. Overview
41.2. The SessionFactory
41.3. Configuration
41.4. Deployment
42. Access Control
42.1. Standard Action Permissions
42.2. eXo Access Control
42.2.1. Principal and Identity
42.2.2. ACL
42.2.3. Notes
42.2.4. Example
42.2.5. Java API
43. Access Control Extension
43.1. Prerequisites
43.2. Overview
43.3. Access Context Action
43.4. The Invocation Context
43.5. Custom Extended Access Manager
43.6. Example of a custom Access Manager
44. Link Producer Service
45. Binary Values Processing
45.1. Configuration
45.2. Usage
45.3. Value implementations
46. JCR Resources:
47. JCR Workspace Data Container (architecture contract)
47.1. Goals
47.2. Concepts
47.2.1. Container and connection
47.2.2. Value storages
47.2.3. Lifecycle
47.2.4. Value storage lifecycle
47.3. Requirements
47.3.1. Read operations
47.3.2. Write operations
47.3.3. State operations
47.3.4. Validation of write operations
47.3.5. Consistency of save
47.4. Value storages API
47.4.1. Storages provider:
47.4.2. Value storage plugin
47.4.3. Value I/O channel
47.4.4. Transaction support via channel
48. How-to implement Workspace Data Container
48.1. Short intro about Workspace data container implementation practices:
48.2. Notes on Value storage usage:
49. DBCleanService
49.1. Description
49.2. Need to clean only single workspace
49.3. Need to clean the whole repository
50. JCR Performance Tuning Guide
50.1. Introduction
50.2. JCR Performance and Scalability
50.2.1. Cluster configuration
50.2.2. JCR Clustered Performance
50.3. Performance Tuning Guide
50.3.1. JBoss AS Tuning
50.3.2. JCR Cache Tuning
50.3.3. Clustering
50.3.4. JVM parameters
II. eXoKernel
51. eXo Kernel
51.1. eXo Kernel introduction
52. ExoContainer info
52.1. Container hierarchy
53. Service Configuration for Beginners
53.1. Objective
53.2. Requirements
53.3. Services
53.4. Configuration File
53.5. Execution Modes
53.6. Containers
53.7. Configuration Retrieval
53.7.1. RootContainer
53.7.2. PortalContainer
53.7.3. StandaloneContainer
53.8. Service instantiation
53.9. Miscellaneous
53.9.1. Startable interface
53.9.2. Inversion of Control
53.9.3. More Containers
53.9.4. Single Implementation Services
53.9.5. Configuration properties
53.9.6. Configuration Logging
53.10. Further Reading
54. Service Configuration in Detail
54.1. Objectives
54.2. Requirements
54.3. Sample Service
54.3.1. Java Class
54.3.2. First configuration file
54.3.3. Init Parameters
54.3.4. Service Access
54.4. Parameters
54.4.1. Value-Param
54.4.2. Properties-Param
54.4.3. Object-Param
54.4.4. Collection
54.5. External Plugin
54.6. Import
54.7. System properties
55. Container Configuration
55.1. Intro
55.2. Kernel configuration namespace
55.3. Understanding how configuration files are loaded
55.3.1. Configuration Retrieval
55.3.2. Advanced concepts for the PortalContainers
55.4. System property configuration
55.4.1. Properties init param
55.4.2. Properties URL init param
55.4.3. System Property configuration of the properties URL
55.5. Variable Syntaxes
55.6. Runtime configuration profiles
55.6.1. Profiles activation
55.6.2. Profiles configuration
55.7. Component request life cycle
55.7.1. Component request life cycle contract
55.7.2. Request life cycle
55.7.3. When request life cycle is triggered
56. Inversion Of Control
56.1. Overview
56.2. How
56.3. Injection
56.4. Side effects
57. Services Wiring
57.1. Overview
57.2. Portal Instance
57.3. Introduction to the XML schema of the configuration.xml file
57.4. Configuration retrieval and log of this retrieval
58. Component Plugin Priority
59. Understanding the ListenerService
59.1. Objectives
59.2. What is the ListenerService ?
59.3. How does it work?
59.3.1. Registering a listener
59.3.2. Triggering an event
59.4. How to configure a listener?
59.5. Concrete Example
60. Initial Context Binder
60.1. API
61. Job Scheduler Service
61.1. What is Job Scheduler?
61.2. Where is Job Scheduler Service used in eXo Products?
61.3. How does Job Scheduler work?
61.3.1. How can Job Scheduler Service be used in Kernel?
61.3.2. Samples
61.4. Reference
62. eXo Cache
62.1. Basic concepts
62.2. Advanced concepts
62.2.1. Invalidation
62.2.2. FutureExoCache
62.3. eXo Cache extension
62.4. eXo Cache based on JBoss Cache
62.4.1. Configuring the ExoCacheFactory
62.4.2. Adding specific configuration for a cache
62.4.3. Adding a cache creator
62.4.4. Defining a cache
62.5. eXo Cache based on Infinispan
62.5.1. Configure the ExoCacheFactory
62.5.2. Add specific configuration for a cache
62.5.3. Add a cache creator
62.5.4. Define an infinispan cache instance
63. TransactionService
63.1. Base information
63.2. Existing TransactionService implementations
63.2.1. JOTM in standalone mode
63.2.2. Generic TransactionService based on the TransactionManagerLookup of JBoss Cache
63.2.3. Specific GenericTransactionService for JBoss Cache and Arjuna
63.2.4. Generic TransactionService based on the TransactionManagerLookup of Infinispan
63.2.5. Specific GenericTransactionService for Infinispan and Arjuna
63.2.6. A very specific TransactionService for JBoss AS
63.2.7. TransactionsEssentials in standalone mode
64. The data source provider
64.1. Description
64.2. Configuration
65. JNDI naming
65.1. Prerequisites
65.2. How it works
65.2.1. JNDI System property initialization
65.2.2. JNDI reference binding
65.3. Configuration examples
65.4. Recommendations for Application Developers
65.5. InitialContextInitializer API
66. Logs configuration
66.1. Introdution
66.2. Logs configuration initializer
66.3. Configuration examples
66.3.1. Log4J
66.3.2. JDK Logging
66.3.3. Commons Logging SimpleLogss
66.4. Tips and Troubleshooting
66.4.1. JBoss tips
66.4.2. Other tips
67. Manageability
67.1. Introduction
67.2. Managed framework API
67.2.1. Annotations
67.3. JMX Management View
67.3.1. JMX Annotations
67.4. Example
67.4.1. CacheService example
68. ListenerService
68.1. Asynchronous Event Broadcast
69. RPC Service
69.1. Description
69.2. Configuration
69.3. The SingleMethodCallCommand
III. eXoCore
70. eXo Core
70.1. eXo Core introduction
71. Database Creator
71.1. About
71.2. API
71.3. A configuration examples
71.4. An examples of a DDL script
72. Security Service
72.1. 1 Overview
72.2. 1 Framework
72.2.1. 1.1 ConversationState and ConversationRegistry
72.2.2. 1.1 Authenticator
72.3. Usage
72.3.1. JAAS login module
72.3.2. 1.1 Predefinded JAAS login modules
72.3.3. 1.1 J2EE container authentication
73. Spring Security Integration
73.1. Introduction
73.2. Installation
73.3. Configuration
73.3.1. JAAS disabling
73.3.2. Enabling spring security
73.3.3. security-context.xml
73.4. Login portlet example
73.4.1. Building the portlet
73.4.2. Setting up the login portal page
73.4.3. Customization of portal login and logout urls
73.4.4. A look at the login page
73.5. Integration strategies
73.5.1. Replication
73.6. Integration with eXo portal
73.7. Security context propagation to portlets
73.7.1. Portal side filter
73.7.2. Portlet side filter
73.8. Conclusion
74. Organization Service
74.1. Overview
74.2. Organizational Model
74.2.1. User
74.2.2. Group
74.2.3. Membership
74.3. Related articles and how-tos
75. Organization Service Initializer
76. Organization Listener
76.1. Overview
76.2. Writing your own listeners
76.2.1. UserEventListener
76.2.2. GroupEventListener
76.2.3. MembershipEventListener
76.3. Registering your listeners
77. Update ConversationState when user's Membership changed
78. DB Schema creator service (JDBC implementation)
79. Database Configuration for Hibernate
79.1. Generic configuration
79.2. Example DB configuration
79.3. Registering custom Hibernate XML files into the service
80. LDAP Configuration
80.1. Overview
80.2. Quickstart
80.3. Configuration
80.3.1. Connection Settings
80.3.2. Organization Service Configuration
80.4. Advanced topics
80.4.1. Automatic directory population
80.4.2. Active Directory sample configuration
80.4.3. OpenLDAP dynlist overlays
81. Organization Service TCK tests configuration
81.1. Introduction
81.2. Maven pom.xml file configuration
81.3. Standalone container and Organization Service configuration
82. Tika Document Reader Service
82.1. Intro
82.2. Architecture
82.3. Configuration
82.4. Old-style DocumentReaders and Tika Parsers
82.4.1. How to make and register own DocumentReader
82.5. TikaDocumentReader features and notes
83. Digest Authentication
83.1. Overview
83.2. Server configuration
83.2.1. Tomcat Server configuration
83.2.2. Jetty server configuration
83.2.3. JBoss server configuration
83.3. OrganizationService implementation requirements
IV. eXoWS
84. eXo Web Services
84.1. eXo Web Services introduction
85. Introduction to the Representational State Transfer (REST)
85.1. Introduction
86. OverwriteDefaultProviders
86.1. Motivation
86.2. Usage
86.3. Example
87. RestServicesList Service
87.1. Overview.
87.2. Usage
87.2.1. HTML format
87.2.2. JSON format
88. Groovy Scripts as REST Services
88.1. Overview
88.2. Loading script and save it in JCR
88.3. Instantiation
88.4. Deploying newly created Class as RESTful service
88.5. Script Lifecycle Management
88.6. Getting node UUID example
88.7. Groovy script restrictions
89. Framework for cross-domain AJAX
89.1. Motivation
89.2. Scheme (how it works)
89.3. A Working Sequence:
89.4. How to use it
V. Frequently Asked Question
90. JCR FAQ
90.1. Kernel
90.1.1. What is the best, standardized way to get the instance of a service ?
90.2. JCR
90.2.1. JCR core
90.2.2. JCR extensions
90.2.3. WebDAV
VI. eXo JCR with GateIn
91. How to extend my GateIn instance?
91.1. Introduction
91.1.1. Overview
91.1.2. Motivations
91.2. Prerequisites
91.2.1. Removing all the hard coded portal container name (i.e. "portal")
91.2.2. Removing all the hard coded rest context name (i.e. "rest")
91.2.3. Removing all the hard coded realm name (i.e. "exo-domain")
91.2.4. Making your Http Filters compatible
91.2.5. Making your HttpServlets compatible
91.2.6. Making your HttpSessionListeners compatible
91.2.7. Use init tasks if you need a PortalContainer to initialize an Http Filter or an HttpServlet
91.2.8. Making your LoginModules compatible
91.2.9. Avoiding static modifier on component dependency
91.2.10. Avoid component initialization based on component dependency in the constructor
91.3. FAQ
91.3.1. What has changed since the previous versions?
91.3.2. What is the main purpose of a portal extension?
91.3.3. What is the main purpose of the starter?
91.3.4. How a portal and a portal container are related?
91.3.5. How to define and register a PortalContainerDefinition?
91.3.6. How the platform interprets the dependency order defined into the PortalContainerDefinition?
91.3.7. How to change the ServletContext name, the realm name and/or the rest context name of my portal without using a PortalContainerDefinition?
91.3.8. How to add new configuration file to a given portal from a war file?
91.3.9. How to create/define a portal extension?
91.3.10. How to deploy a portal extension?
91.3.11. How to create/define a new portal?
91.3.12. How to deploy a new portal?
91.3.13. How to import properly a configuration file using the prefix "war:"?
91.3.14. How to avoid duplicating configuration files just to rename a simple value?
91.3.15. How to add or change a Repository and/or a Workspace?
91.3.16. How to add new ResourceBundles to my portal?
91.3.17. How to overwrite existing ResourceBundles in my portal?
91.3.18. How to replace a groovy template of my portal?
91.3.19. How to add new Portal Configurations, Navigations, Pages or Portlet Preferences to my portal?
91.3.20. How to add new Http Filters to my portal without modifying the portal binary?
91.3.21. How to add new HttpSessionListeners and/or ServletContextListeners to my portal without modifying the portal binary?
91.3.22. How to add new HttpServlet to my portal without modifying the portal binary?
91.3.23. How to override or add a Context Parameter to my portal without modifying the portal binary?
91.3.24. Where can I found an example of how to extend my portal?
91.3.25. How to deploy the sample extension?
91.3.26. Where can I find an example of how to create a new portal?
91.3.27. How to deploy the sample portal?
91.3.28. 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?
91.4. Recommendations
91.4.1. Don't ship your configuration files with your jar files?
91.4.2. Using a dedicated workspace/repository for your extension?
92. How to use AS Managed DataSource under JBoss AS
92.1. Configurations Steps
92.1.1. Declaring the datasources in the AS
92.1.2. Do not let eXo bind datasources explicitly