JBoss.org
Community Documentation
Next
Reference Guide / eXo JCR
Java Content Repository and Extension services
Copyright © 2012 eXoPlatform SAS
I. eXoJCR
1. Introduction in eXoJCR
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. Level 1
5.2. Level 2
5.3. Optional features
6. Using JCR
6.1. Obtaining a Repository object
6.2. JCR Session common considerations
6.3. JCR Application practices
6.3.1. Simplifying the management of a multi-workspace application
6.3.2. Reusing SessionProvider
7. JCR Service Extensions
7.1. Concept
7.2. Implementation
7.3. Configuration
7.4. 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. Node Types definition
12.2. 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
13.14. Getting the effective configuration at Runtime of all the repositories
14. Multi-language support in eXo JCR RDB backend
14.1. Oracle
14.2. DB2
14.3. MySQL
14.4. PostgreSQL
15. How to host several JCR instances on the same database instance?
15.1. LockManager configuration
15.2. 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. General recommendations for database configuration
18.1.1. DB2 configuration
18.1.2. MySQL configuration
18.1.3. PostgreSQL configuration
18.1.4. MS SQL configuration
18.1.5. Sybase configuration
18.1.6. Oracle configuration
18.2. Multi-database Configuration
18.3. Single-database configuration
18.3.1. Configuration without DataSource
18.3.2. Dynamic Workspace Creation
18.4. Simple and Complex queries
18.5. Forse Query Hints
18.6. Notes for Microsoft Windows users
19. External Value Storages
19.1. Tree File Value Storage
19.2. Simple File Value Storage
19.3. Content Addressable Value storage (CAS) support
19.4. Disabling value storage
20. Workspace Data Container
21. REST Services on Groovy
21.1. 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
22.3. How to stop the node properly
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. LockManagerImpl
24.2. CacheableLockManagerImpl
24.2.1. Configuration
24.2.2. Simple JbossCache Configuration
24.2.3. Template JBossCache Configuration
24.2.4. Data Types in Different Databases
24.2.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. Configuration
27. TransactionManagerLookup
28. Infinispan integration
28.1. Components configuration requirements
28.2. Workspaces configuration requirements
28.3. Shipped Infinispan Cache configuration templates
28.3.1. Data container template
28.3.2. Lock manager template
28.3.3. Query handler (indexer) template
29. RepositoryCreationService
29.1. Dependencies
29.2. How it works
29.3. Configuration
29.4. RepositoryCreationService Interface
29.5. Conclusions and restrictions
30. JCR Query Usecases
30.1. Query Lifecycle
30.1.1. Query Creation and Execution
30.1.2. Query Result Processing
30.1.3. Scoring
30.2. Query result settings
30.3. Type Constraints
30.4. Property Constraints
30.5. Path Constraint
30.6. Ordering specifing
30.7. Fulltext Search
30.8. Indexing rules and additional features
30.9. Query Examples
30.9.1. SetOffset and SetLimit
30.9.2. Finding All Nodes
30.9.3. Finding Nodes by Primary Type
30.9.4. Finding Nodes by Mixin Type
30.9.5. Property Comparison
30.9.6. LIKE Constraint
30.9.7. Escaping in LIKE Statements
30.9.8. NOT Constraint
30.9.9. AND Constraint
30.9.10. OR Constraint
30.9.11. Property Existence Constraint
30.9.12. Finding Nodes in a Case-Insensitive Way
30.9.13. Date Property Comparison
30.9.14. Node Name Constraint
30.9.15. Multivalue Property Comparison
30.9.16. Exact Path Constraint
30.9.17. Child Node Constraint
30.9.18. Finding All Descendant Nodes
30.9.19. Sorting Nodes by Property
30.9.20. Ordering by Descendant Nodes Property (XPath only)
30.9.21. Ordering by Score
30.9.22. Ordering by Path or Name
30.9.23. Fulltext Search by Property
30.9.24. Fulltext Search by All Properties in Node
30.9.25. Ignoring Accent Symbols. New Analyzer Setting.
30.9.26. Finding nt:file node by content of child jcr:content node
30.9.27. Changing Priority of Node
30.9.28. Removing Nodes Property From Indexing Scope
30.9.29. Regular Expression as Property Name in Indexing Rules
30.9.30. High-lighting Result of Fulltext Search
30.9.31. Searching By Synonim
30.9.32. Checking the spelling of Phrase
30.9.33. Finding Similar Nodes
30.10. Tips and tricks
30.10.1. XPath queries containing node names starting with a number
31. Searching Repository Content
31.1. Bi-directional RangeIterator (since 1.9)
31.2. Fuzzy Searches (since 1.0)
31.3. SynonymSearch (since 1.9)
31.4. High-lighting (Since 1.9)
31.4.1. DefaultXMLExcerpt
31.4.2. DefaultHTMLExcerpt
31.4.3. How to use it
31.5. SpellChecker
31.5.1. How do I use it?
31.6. Similarity (Since 1.12)
32. Fulltext Search And Affecting Settings
32.1. Property content indexing
32.2. Lucene Analyzers
32.3. How are different properties indexed?
32.4. Fulltext search query examples
32.5. Different analyzers in action
33. JCR API Extensions
33.1. API and usage
33.2. Configuration
33.3. Implementation notices
34. WebDAV
34.1. Configuration
34.2. Screenshots
34.2.1. MS Internet Explorer
34.2.2. Dav Explorer
34.2.3. Xythos Drive
34.2.4. Microsoft Office 2003
34.2.5. Ubuntu Linux
34.3. Comparison table of WebDav and JCR commands
34.4. Restrictions
34.4.1. Windows 7
34.4.2. Microsoft Office 2010
35. FTP
35.1. Configuration Parameters
35.1.1. command-port:
35.1.2. data-min-port & data-max-port
35.1.3. system
35.1.4. client-side-encoding
35.1.5. def-folder-node-type
35.1.6. def-file-node-type
35.1.7. def-file-mime-type
35.1.8. cache-folder-name
35.1.9. upload-speed-limit
35.1.10. download-speed-limit
35.1.11. timeout
36. eXo JCR Backup Service
36.1. Concept
36.2. How it works
36.2.1. Implementation details
36.2.2. Work basics
36.3. Configuration
36.4. RDBMS backup
36.5. Usage
36.5.1. Performing a Backup
36.5.2. Performing a Restore
36.5.3. Repository and Workspace initialization from backup
36.6. Scheduling (experimental)
36.7. Restore existing workspace or repository
36.8. Restore a workspace or a repository using original configuration
36.9. Backup set portability
37. HTTPBackupAgent and backup client
37.1. HTTPBackupAgent
37.1.1. HTTPBackupAgent methods
37.1.2. HTTPBackupAgent Configuration
37.2. Backup Client
37.3. Backup Client Usage
37.3.1. Building application
37.3.2. Running application
37.3.3. Getting information about backup service
37.3.4. Starting full backup
37.3.5. Starting full and incremental backup on a single workspace
37.3.6. Getting information about the current backups (in progress)
37.3.7. Getting information about the current backup by 'backup_id'
37.3.8. Stopping backup by "backup_id"
37.3.9. Getting information about the completed (ready to restore) backups
37.3.10. Restoring to workspace
37.3.11. Getting information about the current restore
37.3.12. Restoring workspace and remove exists workspace
37.3.13. Restoring workspace from backup set
37.3.14. Restoring workspace from backup set and remove exists workspace
37.3.15. Restoring workspace with original configuation
37.3.16. Restoring workspace with original configuation and remove exists workspace
37.3.17. Restoring workspace from backup set with original configuation
37.3.18. Restoring workspace from backup set with original configuation and remove exists workspace
37.3.19. Restoring repository
37.3.20. Restoring repository and remove exists repository
37.3.21. Restoring repository from backup set
37.3.22. Restoring repository from backup set and remove exists repository
37.3.23. Restoring repository with original configuation
37.3.24. Restoring repository with original configuation and remove exists repository
37.3.25. Restoring repository from backup set with original configuation
37.3.26. Restoring repository from backup set with original configuation and remove exists repository
37.4. Full example about creating backup and restoring it for workspace 'backup'
37.4.1. Creating backup
37.4.2. Getting information about current backups
37.4.3. Stopping backup by id
37.4.4. Deleting the workspace "backup" and close opened sessions on this workspace
37.4.5. Restoring the workspace "backup"
37.4.6. Getting information about restore for workspace /repository/backup
37.5. Full example about creating backup and restoring it for repository 'repository'
37.5.1. Creating backup
37.5.2. Getting information about current backups
37.5.3. Stopping backup by id
37.5.4. Deleting the repository "repository" and close all opened sessions
37.5.5. Restoring the repository "repository"
37.5.6. Getting information about restore for repository 'repository'
38.
38.1. Repository suspending
38.2. Backup
38.3. Repository resuming
39. eXo JCR statistics
39.1. Statistics on the Database Access Layer
39.2. Statistics on the JCR API accesses
39.3. Statistics Manager
40. Checking repository integrity and consistency
40.1. Recommendations on how to fix corrupted JCR
41. JTA
42. The
JCA
Resource Adapter
42.1. The
SessionFactory
42.2. Configuration
42.3. Deployment
43. Access Control
43.1. Standard Action Permissions
43.2. eXo Access Control
43.2.1. Principal and Identity
43.2.2. ACL
43.2.3. Notes
43.2.4. Example
43.2.5. Java API
44. Access Control Extension
44.1. Prerequisites
44.2. Access Context Action
44.3. The Invocation Context
44.4. Custom Extended Access Manager
44.5. Example of a custom Access Manager
45. Link Producer Service
46. Binary Values Processing
46.1. Configuration
46.2. Usage
46.3. Value implementations
47. JCR Resources:
48. JCR Workspace Data Container (architecture contract)
48.1. Concepts
48.1.1. Container and connection
48.1.2. Value storages
48.1.3. Lifecycle
48.1.4. Value storage lifecycle
48.2. Requirements
48.2.1. Read operations
48.2.2. Write operations
48.2.3. State operations
48.2.4. Validation of write operations
48.2.5. Consistency of save
48.3. Value storages API
48.3.1. Storages provider:
48.3.2. Value storage plugin
48.3.3. Value I/O channel
48.3.4. Transaction support via channel
49. How-to implement Workspace Data Container
49.1. Notes on Value storage usage:
50. DBCleanService
50.1. Methods of DBCleanerService
50.2. Need to clean only single workspace
50.3. Need to clean the whole repository
51. JCR Performance Tuning Guide
51.1. JCR Performance and Scalability
51.1.1. Cluster configuration
51.1.2. JCR Clustered Performance
51.2. Performance Tuning Guide
51.2.1. JBoss AS Tuning
51.2.2. JCR Cache Tuning
51.2.3. Clustering
51.2.4. JVM parameters
II. eXoKernel
52. ExoContainer info
52.1. Container hierarchy
53. Service Configuration for Beginners
53.1. Requirements
53.2. Services
53.3. Configuration File
53.4. Execution Modes
53.5. Containers
53.6. Configuration Retrieval
53.6.1. RootContainer
53.6.2. PortalContainer
53.6.3. StandaloneContainer
53.7. Service instantiation
53.8. Miscellaneous
53.8.1. Startable interface
53.8.2. Inversion of Control
53.8.3. More Containers
53.8.4. Single Implementation Services
53.8.5. Configuration properties
53.8.6. Configuration Logging
53.9. Further Reading
54. Service Configuration in Detail
54.1. Requirements
54.2. Sample Service
54.2.1. Java Class
54.2.2. First configuration file
54.2.3. Init Parameters
54.2.4. Service Access
54.3. Parameters
54.3.1. Value-Param
54.3.2. Properties-Param
54.3.3. Object-Param
54.3.4. Collection
54.4. External Plugin
54.5. Import
54.6. System properties
54.7. Understanding the prefixes supported by the configuration manager
55. Container Configuration
55.1. Kernel configuration namespace
55.2. Understanding how configuration files are loaded
55.2.1. Configuration Retrieval
55.2.2. Advanced concepts for the
PortalContainers
55.3. System property configuration
55.3.1. Properties init param
55.3.2. Properties URL init param
55.3.3. System Property configuration of the properties URL
55.4. Variable Syntaxes
55.5. Runtime configuration profiles
55.5.1. Profiles activation
55.5.2. Profiles configuration
55.6. Component request life cycle
55.6.1. Component request life cycle contract
55.6.2. Request life cycle
55.6.3. When request life cycle is triggered
56. Inversion Of Control
56.1. How
56.2. Injection
56.3. Side effects
57. Services Wiring
57.1. Portal Instance
57.2. Introduction to the XML schema of the configuration.xml file
57.3. Configuration retrieval and log of this retrieval
58. Component Plugin Priority
59. Understanding the ListenerService
59.1. What is the ListenerService ?
59.2. How does it work?
59.2.1. Registering a listener
59.2.2. Triggering an event
59.3. How to configure a listener?
59.4. Concrete Example
60. Initial Context Binder
60.1. API
61. Job Scheduler Service
61.1. Where is Job Scheduler Service used in eXo Products?
61.2. How does Job Scheduler work?
61.2.1. How can Job Scheduler Service be used in Kernel?
61.2.2. Samples
61.3. 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
62.5.5. Using Infinispan in distributed mode
63. TransactionService
63.1. Existing TransactionService implementations
63.1.1. JOTM in standalone mode
63.1.2. Generic TransactionService based on the TransactionManagerLookup of JBoss Cache
63.1.3. Specific GenericTransactionService for JBoss Cache and Arjuna
63.1.4. Generic TransactionService based on the TransactionManagerLookup of Infinispan
63.1.5. Specific GenericTransactionService for Infinispan and Arjuna
63.1.6. A very specific TransactionService for JBoss AS
63.1.7. TransactionsEssentials in standalone mode
64. The data source provider
64.1. 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. Logs configuration initializer
66.2. Configuration examples
66.2.1. Log4J
66.2.2. JDK Logging
66.2.3. Commons Logging SimpleLogss
66.3. Tips and Troubleshooting
66.3.1. JBoss tips
66.3.2. Other tips
67. Manageability
67.1. Managed framework API
67.1.1. Annotations
67.2. JMX Management View
67.2.1. JMX Annotations
67.3. Example
67.3.1. CacheService example
68. ListenerService
69. RPC Service
69.1. Configuration
69.2. The SingleMethodCallCommand
III. eXoCore
70. Database Creator
70.1. API
70.2. A configuration examples
70.3. An examples of a DDL script
71. Security Service
71.1. Framework
71.1.1. ConversationState and ConversationRegistry
71.1.2. Authenticator
71.2. Usage
71.2.1. JAAS login module
71.2.2. Predefinded JAAS login modules
71.2.3. J2EE container authentication
72. Spring Security Integration
72.1. Installation
72.2. Configuration
72.2.1. JAAS disabling
72.2.2. Enabling spring security
72.2.3. security-context.xml
72.3. Login portlet example
72.3.1. Building the portlet
72.3.2. Setting up the login portal page
72.3.3. Customization of portal login and logout urls
72.3.4. A look at the login page
72.4. Integration strategies
72.4.1. Direct integration
72.4.2. Replication
72.5. Integration with eXo portal
72.6. Security context propagation to portlets
72.6.1. Portal side filter
72.6.2. Portlet side filter
72.7. Conclusion
73. Organization Service
73.1. Organizational Model
73.1.1. User
73.1.2. Group
73.1.3. Membership
73.2. Custom Organization Service implementation instructions
73.2.1. Basic entities implementation
73.2.2. Unit handlers implementation
73.2.3. Extending BaseOrganizationService class
73.2.4. Verification of compliance
73.3. Related articles and how-tos
74. Organization Service Initializer
75. Organization Listener
75.1. Writing your own listeners
75.1.1. UserEventListener
75.1.2. GroupEventListener
75.1.3. MembershipEventListener
75.2. Registering your listeners
76. Update ConversationState when user's Membership changed
77. DB Schema creator service (JDBC implementation)
78. Database Configuration for Hibernate
78.1. Generic configuration
78.2. Example DB configuration
78.3. Registering custom Hibernate XML files into the service
79. LDAP Configuration
79.1. Quickstart
79.2. Configuration
79.2.1. Connection Settings
79.2.2. Organization Service Configuration
79.3. Advanced topics
79.3.1. Automatic directory population
79.3.2. Active Directory sample configuration
79.3.3. OpenLDAP dynlist overlays
80. Organization Service TCK tests configuration
80.1. Maven pom.xml file configuration
80.2. Standalone container and Organization Service configuration
81. Tika Document Reader Service
81.1. Architecture
81.2. Configuration
81.3. Old-style DocumentReaders and Tika Parsers
81.3.1. How to make and register own DocumentReader
81.4. TikaDocumentReader features and notes
82. Digest Authentication
82.1. Server configuration
82.1.1. Tomcat Server configuration
82.1.2. Jetty server configuration
82.1.3. JBoss server configuration
82.2. OrganizationService implementation requirements
IV. eXoWS
83. Introduction to the Representational State Transfer (REST)
84. Overwrite default providers
84.1. Motivation
84.2. Usage
84.3. Example
85. RestServicesList Service
85.1. Usage
85.1.1. HTML format
85.1.2. JSON format
86. Groovy Scripts as REST Services
86.1. Loading script and save it in JCR
86.2. Instantiation
86.3. Deploying newly created Class as RESTful service
86.4. Script Lifecycle Management
86.5. Getting node UUID example
86.6. Groovy script restrictions
87. Framework for cross-domain AJAX
87.1. Motivation
87.2. Scheme (how it works)
87.3. A Working Sequence:
87.4. How to use it
V. Frequently Asked Question
88. JCR FAQ
88.1. Kernel
88.1.1. What is the best, standardized way to get the instance of a service ?
88.2. JCR
88.2.1. JCR core
88.2.2. JCR extensions
88.2.3. WebDAV
VI. eXo JCR with GateIn
89. How to extend my GateIn instance?
89.1. Motivations
89.2. Prerequisites
89.2.1. Removing all the hard coded portal container name (i.e. "portal")
89.2.2. Removing all the hard coded rest context name (i.e. "rest")
89.2.3. Removing all the hard coded realm name (i.e. "exo-domain")
89.2.4. Making your Http Filters compatible
89.2.5. Making your HttpServlets compatible
89.2.6. Making your HttpSessionListeners compatible
89.2.7. Use init tasks if you need a PortalContainer to initialize an Http Filter or an HttpServlet
89.2.8. Making your LoginModules compatible
89.2.9. Avoiding
static
modifier on component dependency
89.2.10. Avoid component initialization based on component dependency in the constructor
89.3. FAQ
89.3.1. What has changed since the previous versions?
89.3.2. What is the main purpose of a
portal extension
?
89.3.3. What is the main purpose of the
starter
?
89.3.4. How a portal and a portal container are related?
89.3.5. How to define and register a
PortalContainerDefinition
?
89.3.6. How the platform interprets the dependency order defined into the PortalContainerDefinition?
89.3.7. How to change the ServletContext name, the realm name and/or the rest context name of my portal without using a PortalContainerDefinition?
89.3.8. How to add new configuration file to a given portal from a war file?
89.3.9. How to create/define a portal extension?
89.3.10. How to deploy a portal extension?
89.3.11. How to create/define a new portal?
89.3.12. How to deploy a new portal?
89.3.13. How to import properly a configuration file using the prefix "war:"?
89.3.14. How to avoid duplicating configuration files just to rename a simple value?
89.3.15. How to add or change a Repository and/or a Workspace?
89.3.16. How to add new ResourceBundles to my portal?
89.3.17. How to overwrite existing ResourceBundles in my portal?
89.3.18. How to replace a groovy template of my portal?
89.3.19. How to add new Portal Configurations, Navigations, Pages or Portlet Preferences to my portal?
89.3.20. How to add new Http Filters to my portal without modifying the portal binary?
89.3.21. How to add new
HttpSessionListeners
and/or
ServletContextListeners
to my portal without modifying the portal binary?
89.3.22. How to add new
HttpServlet
to my portal without modifying the portal binary?
89.3.23. How to override or add a Context Parameter to my portal without modifying the portal binary?
89.3.24. Where can I found an example of how to extend my portal?
89.3.25. How to deploy the sample extension?
89.3.26. Where can I find an example of how to create a new portal?
89.3.27. How to deploy the sample portal?
89.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?
89.4. Recommendations
89.4.1. Don't ship your configuration files with your jar files?
89.4.2. Using a dedicated workspace/repository for your extension?
90. How to use AS Managed DataSource under JBoss AS
90.1. Declaring the datasources in the AS
90.2. Do not let eXo bind datasources explicitly
Next
Part I. eXoJCR