JBoss.org
Community Documentation
Next
eXo JCR Developer Guide
Java Content Repository and Extension services
Copyright © 2009, 2010 eXoPlatform
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. Search Configuration
15.1. XML Configuration
15.2. Configuration parameters
15.3. Global Search Index
15.3.1. Global Search Index Configuration
15.3.2. Customized Search Indexes and Analyzers
15.4. Indexing Adjustments
15.4.1. IndexingConfiguration
15.4.2. Indexing rules
15.4.3. Indexing Aggregates
15.4.4. Property-Level Analyzers
15.4.5. Advanced features
16. JCR Configuration persister
16.1. Idea
16.2. Usage
17. JDBC Data Container Config
17.1. Introduction
17.2. Multi-database Configuration
17.3. Single-database configuration
17.3.1. Configuration without DataSource
17.3.2. Dynamic Workspace Creation
17.4. Simple and Complex queries
17.5. Forse Query Hints
17.6. Notes for Microsoft Windows users
18. External Value Storages
18.1. Introduction
18.2. Tree File Value Storage
18.3. Simple File Value Storage
18.4. Content Addressable Value storage (CAS) support
18.5. Disabling value storage
19. Workspace Data Container
20. REST Services on Groovy
20.1. Concept
20.2. Usage
21. Configuring JBoss AS with eXo JCR in cluster
21.1. Launching Cluster
21.1.1. Deploying eXo JCR to JBoss As
21.1.2. Configuring JCR to use external configuration
21.2. Requirements
21.2.1. Environment requirements
21.2.2. Configuration requirements
22. JBoss Cache configuration
22.1. JBoss cache configuration for indexer, lock manager and data container
22.2. JGroups configuration
22.3. Allow to share JBoss Cache instances
22.4. Shipped JBoss Cache configuration templates
22.4.1. Data container template
22.4.2. Lock manager template
22.4.3. Query handler (indexer) template
23. LockManager configuration
23.1. Introduction
23.2. LockManagerImpl
23.3. CacheableLockManagerImpl
23.3.1. Configuration
23.3.2. Simple JbossCache Configuration
23.3.3. Template JBossCache Configuration
23.3.4. Data Types in Different Databases
24. QueryHandler configuration
24.1. Indexing in clustered environment
24.2. Configuration
24.2.1. Query-handler configuration overview
24.2.2. Standalone strategy
24.2.3. Cluster-ready indexing strategies
24.2.4. JBoss-Cache template configuration
24.3. Asynchronous reindexing
24.3.1. On startup indexing
24.3.2. Hot Asynchronous Workspace Reindexing via JMX
24.3.3. Notices
24.4. Advanced tuning
24.4.1. Lucene tuning
25. JBossTransactionsService
25.1. Introduction
25.2. Configuration
26. TransactionManagerLookup
26.1. Configuration
27. RepositoryCreationService
27.1. Intro
27.2. Dependencies
27.3. How it works
27.4. Configuration
27.5. RepositoryCreationService Interface
27.6. Conclusions and restrictions
28. JCR Query Usecases
28.1. Intro
28.2. Query Lifecycle
28.2.1. Query Creation and Execution
28.2.2. Query Result Processing
28.2.3. Scoring
28.3. Query result settings
28.4. Type Constraints
28.5. Property Constraints
28.6. Path Constraint
28.7. Ordering specifing
28.8. Fulltext Search
28.9. Indexing rules and additional features
28.10. Query Examples
28.10.1. SetOffset and SetLimit
28.10.2. Finding All Nodes
28.10.3. Finding Nodes by Primary Type
28.10.4. Finding Nodes by Mixin Type
28.10.5. Property Comparison
28.10.6. LIKE Constraint
28.10.7. Escaping in LIKE Statements
28.10.8. NOT Constraint
28.10.9. AND Constraint
28.10.10. OR Constraint
28.10.11. Property Existence Constraint
28.10.12. Finding Nodes in a Case-Insensitive Way
28.10.13. Date Property Comparison
28.10.14. Node Name Constraint
28.10.15. Multivalue Property Comparison
28.10.16. Exact Path Constraint
28.10.17. Child Node Constraint
28.10.18. Finding All Descendant Nodes
28.10.19. Sorting Nodes by Property
28.10.20. Ordering by Descendant Nodes Property (XPath only)
28.10.21. Ordering by Score
28.10.22. Ordering by Path or Name
28.10.23. Fulltext Search by Property
28.10.24. Fulltext Search by All Properties in Node
28.10.25. Ignoring Accent Symbols. New Analyzer Setting.
28.10.26. Finding nt:file node by content of child jcr:content node
28.10.27. Changing Priority of Node
28.10.28. Removing Nodes Property From Indexing Scope
28.10.29. Regular Expression as Property Name in Indexing Rules
28.10.30. High-lighting Result of Fulltext Search
28.10.31. Searching By Synonim
28.10.32. Checking the spelling of Phrase
28.10.33. Finding Similar Nodes
28.11. Tips and tricks
28.11.1. XPath queries containing node names starting with a number
29. Searching Repository Content
29.1. Introduction
29.2. Bi-directional RangeIterator (since 1.9)
29.3. Fuzzy Searches (since 1.0)
29.4. SynonymSearch (since 1.9)
29.5. High-lighting (Since 1.9)
29.5.1. DefaultXMLExcerpt
29.5.2. DefaultHTMLExcerpt
29.5.3. How to use it
29.6. SpellChecker
29.6.1. How do I use it?
29.7. Similarity (Since 1.12)
30. Fulltext Search And Affecting Settings
30.1. Property content indexing
30.2. Lucene Analyzers
30.3. How are different properties indexed?
30.4. Fulltext search query examples
30.5. Different analyzers in action
31. JCR API Extensions
31.1. "Lazy" child nodes iteration
31.1.1. Concept
31.1.2. API and usage
31.1.3. Configuration
31.1.4. Implementation notices
32. WebDAV
32.1. Related documents
32.2. Introduction
32.3. Configuration
32.4. Screenshots
32.4.1. MS Internet Explorer
32.4.2. Dav Explorer
32.4.3. Xythos Drive
32.4.4. Microsoft Office 2003
32.4.5. Ubuntu Linux
32.5. Comparison table of WebDav and JCR commands
32.6. Restrictions
32.6.1. Windows 7
32.6.2. Microsoft Office 2010
33. FTP
33.1. Introdution
33.2. Configuration Parameters
33.2.1. command-port:
33.2.2. data-min-port & data-max-port
33.2.3. system
33.2.4. client-side-encoding
33.2.5. def-folder-node-type
33.2.6. def-file-node-type
33.2.7. def-file-mime-type
33.2.8. cache-folder-name
33.2.9. upload-speed-limit
33.2.10. download-speed-limit
33.2.11. timeout
34. eXo JCR Backup Service
34.1. Concept
34.2. How it works
34.2.1. Implementation details
34.2.2. Work basics
34.3. Configuration
34.4. RDBMS backup
34.5. Usage
34.5.1. Performing a Backup
34.5.2. Performing a Restore
34.5.3. Repository and Workspace initialization from backup
34.6. Scheduling (experimental)
34.7. Restore existing workspace or repository
34.8. Restore a workspace or a repository using original configuration
34.9. Backup set portability
35. HTTPBackupAgent and backup client
35.1. Introduction
35.2. HTTPBackupAgent
35.2.1. HTTPBackupAgent methods
35.2.2. HTTPBackupAgent Configuration
35.3. Backup Client
35.4. Backup Client Usage
35.4.1. Building application
35.4.2. Running application
35.4.3. Getting information about backup service
35.4.4. Starting full backup
35.4.5. Starting full and incremental backup on a single workspace
35.4.6. Getting information about the current backups (in progress)
35.4.7. Getting information about the current backup by 'backup_id'
35.4.8. Stopping backup by "backup_id"
35.4.9. Getting information about the completed (ready to restore) backups
35.4.10. Restoring to workspace
35.4.11. Getting information about the current restore
35.4.12. Restoring workspace and remove exists workspace
35.4.13. Restoring workspace from backup set
35.4.14. Restoring workspace from backup set and remove exists workspace
35.4.15. Restoring workspace with original configuation
35.4.16. Restoring workspace with original configuation and remove exists workspace
35.4.17. Restoring workspace from backup set with original configuation
35.4.18. Restoring workspace from backup set with original configuation and remove exists workspace
35.4.19. Restoring repository
35.4.20. Restoring repository and remove exists repository
35.4.21. Restoring repository from backup set
35.4.22. Restoring repository from backup set and remove exists repository
35.4.23. Restoring repository with original configuation
35.4.24. Restoring repository with original configuation and remove exists repository
35.4.25. Restoring repository from backup set with original configuation
35.4.26. Restoring repository from backup set with original configuation and remove exists repository
35.5. Full example about creating backup and restoring it for workspace 'backup'
35.5.1. Creating backup
35.5.2. Getting information about current backups
35.5.3. Stopping backup by id
35.5.4. Deleting the workspace "backup" and close opened sessions on this workspace
35.5.5. Restoring the workspace "backup"
35.5.6. Getting information about restore for workspace /repository/backup
35.6. Full example about creating backup and restoring it for repository 'repository'
35.6.1. Creating backup
35.6.2. Getting information about current backups
35.6.3. Stopping backup by id
35.6.4. Deleting the repository "repository" and close all opened sessions
35.6.5. Restoring the repository "repository"
35.6.6. Getting information about restore for repository 'repository'
36. Use external backup tool
36.1. Repository suspending
36.2. Backup
36.3. Repository resuming
37. eXo JCR statistics
37.1. Statistics on the Database Access Layer
37.2. Statistics on the JCR API accesses
37.3. Statistics Manager
38. JTA
39. The
JCA
Resource Adapter
39.1. Overview
39.2. The
SessionFactory
39.3. Configuration
39.4. Deployment
40. Access Control
40.1. Standard Action Permissions
40.2. eXo Access Control
40.2.1. Principal and Identity
40.2.2. ACL
40.2.3. Notes
40.2.4. Example
40.2.5. Java API
41. Access Control Extension
41.1. Prerequisites
41.2. Overview
41.3. Access Context Action
41.4. The Invocation Context
41.5. Custom Extended Access Manager
41.6. Example of a custom Access Manager
42. Link Producer Service
43. Binary Values Processing
43.1. Configuration
43.2. Usage
43.3. Value implementations
44. JCR Resources:
45. JCR Workspace Data Container (architecture contract)
45.1. Goals
45.2. Concepts
45.2.1. Container and connection
45.2.2. Value storages
45.2.3. Lifecycle
45.2.4. Value storage lifecycle
45.3. Requirements
45.3.1. Read operations
45.3.2. Write operations
45.3.3. State operations
45.3.4. Validation of write operations
45.3.5. Consistency of save
45.4. Value storages API
45.4.1. Storages provider:
45.4.2. Value storage plugin
45.4.3. Value I/O channel
45.4.4. Transaction support via channel
46. How-to implement Workspace Data Container
46.1. Short intro about Workspace data container implementation practices:
46.2. Notes on Value storage usage:
47. DBCleanService
47.1. API
48. JCR Performance Tuning Guide
48.1. Introduction
48.2. JCR Performance and Scalability
48.2.1. Cluster configuration
48.2.2. JCR Clustered Performance
48.3. Performance Tuning Guide
48.3.1. JBoss AS Tuning
48.3.2. JCR Cache Tuning
48.3.3. Clustering
48.3.4. JVM parameters
II. eXoKernel
49. eXo Kernel
49.1. eXo Kernel introduction
50. ExoContainer info
50.1. Container hierarchy
51. Service Configuration for Beginners
51.1. Objective
51.2. Requirements
51.3. Services
51.4. Configuration File
51.5. Execution Modes
51.6. Containers
51.7. Configuration Retrieval
51.7.1. RootContainer
51.7.2. PortalContainer
51.7.3. StandaloneContainer
51.8. Service instantiation
51.9. Miscellaneous
51.9.1. Startable interface
51.9.2. Inversion of Control
51.9.3. More Containers
51.9.4. Single Implementation Services
51.9.5. Configuration properties
51.9.6. Configuration Logging
51.10. Further Reading
52. Service Configuration in Detail
52.1. Objectives
52.2. Requirements
52.3. Sample Service
52.3.1. Java Class
52.3.2. First configuration file
52.3.3. Init Parameters
52.3.4. Service Access
52.4. Parameters
52.4.1. Value-Param
52.4.2. Properties-Param
52.4.3. Object-Param
52.4.4. Collection
52.5. External Plugin
52.6. Import
52.7. System properties
53. Container Configuration
53.1. Intro
53.2. Kernel configuration namespace
53.3. Understanding how configuration files are loaded
53.3.1. Configuration Retrieval
53.3.2. Advanced concepts for the
PortalContainers
53.4. System property configuration
53.4.1. Properties init param
53.4.2. Properties URL init param
53.4.3. System Property configuration of the properties URL
53.5. Variable Syntaxes
53.6. Runtime configuration profiles
53.6.1. Profiles activation
53.6.2. Profiles configuration
53.7. Component request life cycle
53.7.1. Component request life cycle contract
53.7.2. Request life cycle
53.7.3. When request life cycle is triggered
54. Inversion Of Control
54.1. Overview
54.2. How
54.3. Injection
54.4. Side effects
55. Services Wiring
55.1. Overview
55.2. Portal Instance
55.3. Introduction to the XML schema of the configuration.xml file
55.4. Configuration retrieval and log of this retrieval
56. Component Plugin Priority
57. Understanding the ListenerService
57.1. Objectives
57.2. What is the ListenerService ?
57.3. How does it work?
57.3.1. Registering a listener
57.3.2. Triggering an event
57.4. How to configure a listener?
57.5. Concrete Example
58. Initial Context Binder
58.1. API
59. Job Scheduler Service
59.1. What is Job Scheduler?
59.2. Where is Job Scheduler Service used in eXo Products?
59.3. How does Job Scheduler work?
59.3.1. How can Job Scheduler Service be used in Kernel?
59.3.2. Samples
59.4. Reference
60. eXo Cache
60.1. Basic concepts
60.2. Advanced concepts
60.2.1. Invalidation
60.2.2. FutureExoCache
60.3. eXo Cache extension
60.4. eXo Cache based on JBoss Cache
60.4.1. Configuring the ExoCacheFactory
60.4.2. Adding specific configuration for a cache
60.4.3. Adding a cache creator
60.4.4. Defining a cache
60.5. eXo Cache based on Infinispan
60.5.1. Configure the ExoCacheFactory
60.5.2. Add specific configuration for a cache
60.5.3. Add a cache creator
60.5.4. Define an infinispan cache instance
61. TransactionService
61.1. Base information
61.2. Existing TransactionService implementations
61.2.1. JOTM in standalone mode
61.2.2. Generic TransactionService based on the TransactionManagerLookup of JBoss Cache
61.2.3. Specific GenericTransactionService for JBoss Cache and Arjuna
61.2.4. Generic TransactionService based on the TransactionManagerLookup of Infinispan
61.2.5. Specific GenericTransactionService for Infinispan and Arjuna
61.2.6. A very specific TransactionService for JBoss AS
61.2.7. TransactionsEssentials in standalone mode
62. The data source provider
62.1. Description
62.2. Configuration
63. JNDI naming
63.1. Prerequisites
63.2. How it works
63.2.1. JNDI System property initialization
63.2.2. JNDI reference binding
63.3. Configuration examples
63.4. Recommendations for Application Developers
63.5. InitialContextInitializer API
64. Logs configuration
64.1. Introdution
64.2. Logs configuration initializer
64.3. Configuration examples
64.3.1. Log4J
64.3.2. JDK Logging
64.3.3. Commons Logging SimpleLogss
64.4. Tips and Troubleshooting
64.4.1. JBoss tips
64.4.2. Other tips
65. Manageability
65.1. Introduction
65.2. Managed framework API
65.2.1. Annotations
65.3. JMX Management View
65.3.1. JMX Annotations
65.4. Example
65.4.1. CacheService example
66. ListenerService
66.1. Asynchronous Event Broadcast
67. RPC Service
67.1. Description
67.2. Configuration
67.3. The SingleMethodCallCommand
III. eXoCore
68. eXo Core
68.1. eXo Core introduction
69. Database Creator
69.1. About
69.2. API
69.3. A configuration examples
69.4. An examples of a DDL script
70. Security Service
70.1. 1 Overview
70.2. 1 Framework
70.2.1. 1.1 ConversationState and ConversationRegistry
70.2.2. 1.1 Authenticator
70.3. Usage
70.3.1. JAAS login module
70.3.2. 1.1 Predefinded JAAS login modules
70.3.3. 1.1 J2EE container authentication
71. Spring Security Integration
71.1. Introduction
71.2. Installation
71.3. Configuration
71.3.1. JAAS disabling
71.3.2. Enabling spring security
71.3.3. security-context.xml
71.4. Login portlet example
71.4.1. Building the portlet
71.4.2. Setting up the login portal page
71.4.3. Customization of portal login and logout urls
71.4.4. A look at the login page
71.5. Integration strategies
71.5.1. Replication
71.6. Integration with eXo portal
71.7. Security context propagation to portlets
71.7.1. Portal side filter
71.7.2. Portlet side filter
71.8. Conclusion
72. Organization Service
72.1. Overview
72.2. Organizational Model
72.2.1. User
72.2.2. Group
72.2.3. Membership
72.3. Related articles and how-tos
73. Organization Service Initializer
74. Organization Listener
74.1. Overview
74.2. Writing your own listeners
74.2.1. UserEventListener
74.2.2. GroupEventListener
74.2.3. MembershipEventListener
74.3. Registering your listeners
75. Update ConversationState when user's Membership changed
76. DB Schema creator service (JDBC implementation)
77. Database Configuration for Hibernate
77.1. Generic configuration
77.2. Example DB configuration
77.3. Registering custom Hibernate XML files into the service
78. LDAP Configuration
78.1. Overview
78.2. Quickstart
78.3. Configuration
78.3.1. Connection Settings
78.3.2. Organization Service Configuration
78.4. Advanced topics
78.4.1. Automatic directory population
78.4.2. Active Directory sample configuration
78.4.3. OpenLDAP dynlist overlays
79. Tika Document Reader Service
79.1. Intro
79.2. Architecture
79.3. Configuration
79.4. Old-style DocumentReaders and Tika Parsers
79.4.1. How to make and register own DocumentReader
79.5. TikaDocumentReader features and notes
80. Digest Authentication
80.1. Overview
80.2. Server configuration
80.2.1. Tomcat Server configuration
80.2.2. Jetty server configuration
80.2.3. JBoss server configuration
80.3. OrganizationService implementation requirements
IV. eXoWS
81. eXo Web Services
81.1. eXo Web Services introduction
82. Introduction to the Representational State Transfer (REST)
82.1. Introduction
83. OverwriteDefaultProviders
83.1. Motivation
83.2. Usage
83.3. Example
84. RestServicesList Service
84.1. Overview.
84.2. Usage
84.2.1. HTML format
84.2.2. JSON format
85. Groovy Scripts as REST Services
85.1. Overview
85.2. Loading script and save it in JCR
85.3. Instantiation
85.4. Deploying newly created Class as RESTful service
85.5. Script Lifecycle Management
85.6. Getting node UUID example
85.7. Groovy script restrictions
86. Framework for cross-domain AJAX
86.1. Motivation
86.2. Scheme (how it works)
86.3. A Working Sequence:
86.4. How to use it
V. Frequently Asked Question
87. JCR FAQ
87.1. Kernel
87.1.1. What is the best, standardized way to get the instance of a service ?
87.2. JCR
87.2.1. JCR core
87.2.2. JCR extensions
87.2.3. WebDAV
VI. eXo JCR with GateIn
88. How to extend my GateIn instance?
88.1. Introduction
88.1.1. Overview
88.1.2. Motivations
88.2. Prerequisites
88.2.1. Removing all the hard coded portal container name (i.e. "portal")
88.2.2. Removing all the hard coded rest context name (i.e. "rest")
88.2.3. Removing all the hard coded realm name (i.e. "exo-domain")
88.2.4. Making your Http Filters compatible
88.2.5. Making your HttpServlets compatible
88.2.6. Making your HttpSessionListeners compatible
88.2.7. Use init tasks if you need a PortalContainer to initialize an Http Filter or an HttpServlet
88.2.8. Making your LoginModules compatible
88.2.9. Avoiding
static
modifier on component dependency
88.2.10. Avoid component initialization based on component dependency in the constructor
88.3. FAQ
88.3.1. What has changed since the previous versions?
88.3.2. What is the main purpose of a
portal extension
?
88.3.3. What is the main purpose of the
starter
?
88.3.4. How a portal and a portal container are related?
88.3.5. How to define and register a
PortalContainerDefinition
?
88.3.6. How the platform interprets the dependency order defined into the PortalContainerDefinition?
88.3.7. How to change the ServletContext name, the realm name and/or the rest context name of my portal without using a PortalContainerDefinition?
88.3.8. How to add new configuration file to a given portal from a war file?
88.3.9. How to create/define a portal extension?
88.3.10. How to deploy a portal extension?
88.3.11. How to create/define a new portal?
88.3.12. How to deploy a new portal?
88.3.13. How to import properly a configuration file using the prefix "war:"?
88.3.14. How to avoid duplicating configuration files just to rename a simple value?
88.3.15. How to add or change a Repository and/or a Workspace?
88.3.16. How to add new ResourceBundles to my portal?
88.3.17. How to overwrite existing ResourceBundles in my portal?
88.3.18. How to replace a groovy template of my portal?
88.3.19. How to add new Portal Configurations, Navigations, Pages or Portlet Preferences to my portal?
88.3.20. How to add new Http Filters to my portal without modifying the portal binary?
88.3.21. How to add new
HttpSessionListeners
and/or
ServletContextListeners
to my portal without modifying the portal binary?
88.3.22. How to add new
HttpServlet
to my portal without modifying the portal binary?
88.3.23. How to override or add a Context Parameter to my portal without modifying the portal binary?
88.3.24. Where can I found an example of how to extend my portal?
88.3.25. How to deploy the sample extension?
88.3.26. Where can I find an example of how to create a new portal?
88.3.27. How to deploy the sample portal?
88.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?
88.4. Recommendations
88.4.1. Don't ship your configuration files with your jar files?
88.4.2. Using a dedicated workspace/repository for your extension?
89. How to use AS Managed DataSource under JBoss AS
89.1. Configurations Steps
89.1.1. Declaring the datasources in the AS
89.1.2. Do not let eXo bind datasources explicitly
Next
Part I. eXoJCR