JBoss.orgCommunity Documentation

eXo JCR Developer Guide

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. 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
23.3.5. Lock migration from 1.12.x
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. Checking repository integrity and consistency
38.1. JMX-based consistency tool
39. JTA
40. The JCA Resource Adapter
40.1. Overview
40.2. The SessionFactory
40.3. Configuration
40.4. Deployment
41. Access Control
41.1. Standard Action Permissions
41.2. eXo Access Control
41.2.1. Principal and Identity
41.2.2. ACL
41.2.3. Notes
41.2.4. Example
41.2.5. Java API
42. Access Control Extension
42.1. Prerequisites
42.2. Overview
42.3. Access Context Action
42.4. The Invocation Context
42.5. Custom Extended Access Manager
42.6. Example of a custom Access Manager
43. Link Producer Service
44. Binary Values Processing
44.1. Configuration
44.2. Usage
44.3. Value implementations
45. JCR Resources:
46. JCR Workspace Data Container (architecture contract)
46.1. Goals
46.2. Concepts
46.2.1. Container and connection
46.2.2. Value storages
46.2.3. Lifecycle
46.2.4. Value storage lifecycle
46.3. Requirements
46.3.1. Read operations
46.3.2. Write operations
46.3.3. State operations
46.3.4. Validation of write operations
46.3.5. Consistency of save
46.4. Value storages API
46.4.1. Storages provider:
46.4.2. Value storage plugin
46.4.3. Value I/O channel
46.4.4. Transaction support via channel
47. How-to implement Workspace Data Container
47.1. Short intro about Workspace data container implementation practices:
47.2. Notes on Value storage usage:
48. DBCleanService
48.1. API
49. JCR Performance Tuning Guide
49.1. Introduction
49.2. JCR Performance and Scalability
49.2.1. Cluster configuration
49.2.2. JCR Clustered Performance
49.3. Performance Tuning Guide
49.3.1. JBoss AS Tuning
49.3.2. JCR Cache Tuning
49.3.3. Clustering
49.3.4. JVM parameters
II. eXoKernel
50. eXo Kernel
50.1. eXo Kernel introduction
51. ExoContainer info
51.1. Container hierarchy
52. Service Configuration for Beginners
52.1. Objective
52.2. Requirements
52.3. Services
52.4. Configuration File
52.5. Execution Modes
52.6. Containers
52.7. Configuration Retrieval
52.7.1. RootContainer
52.7.2. PortalContainer
52.7.3. StandaloneContainer
52.8. Service instantiation
52.9. Miscellaneous
52.9.1. Startable interface
52.9.2. Inversion of Control
52.9.3. More Containers
52.9.4. Single Implementation Services
52.9.5. Configuration properties
52.9.6. Configuration Logging
52.10. Further Reading
53. Service Configuration in Detail
53.1. Objectives
53.2. Requirements
53.3. Sample Service
53.3.1. Java Class
53.3.2. First configuration file
53.3.3. Init Parameters
53.3.4. Service Access
53.4. Parameters
53.4.1. Value-Param
53.4.2. Properties-Param
53.4.3. Object-Param
53.4.4. Collection
53.5. External Plugin
53.6. Import
53.7. System properties
54. Container Configuration
54.1. Intro
54.2. Kernel configuration namespace
54.3. Understanding how configuration files are loaded
54.3.1. Configuration Retrieval
54.3.2. Advanced concepts for the PortalContainers
54.4. System property configuration
54.4.1. Properties init param
54.4.2. Properties URL init param
54.4.3. System Property configuration of the properties URL
54.5. Variable Syntaxes
54.6. Runtime configuration profiles
54.6.1. Profiles activation
54.6.2. Profiles configuration
54.7. Component request life cycle
54.7.1. Component request life cycle contract
54.7.2. Request life cycle
54.7.3. When request life cycle is triggered
55. Inversion Of Control
55.1. Overview
55.2. How
55.3. Injection
55.4. Side effects
56. Services Wiring
56.1. Overview
56.2. Portal Instance
56.3. Introduction to the XML schema of the configuration.xml file
56.4. Configuration retrieval and log of this retrieval
57. Component Plugin Priority
58. Understanding the ListenerService
58.1. Objectives
58.2. What is the ListenerService ?
58.3. How does it work?
58.3.1. Registering a listener
58.3.2. Triggering an event
58.4. How to configure a listener?
58.5. Concrete Example
59. Initial Context Binder
59.1. API
60. Job Scheduler Service
60.1. What is Job Scheduler?
60.2. Where is Job Scheduler Service used in eXo Products?
60.3. How does Job Scheduler work?
60.3.1. How can Job Scheduler Service be used in Kernel?
60.3.2. Samples
60.4. Reference
61. eXo Cache
61.1. Basic concepts
61.2. Advanced concepts
61.2.1. Invalidation
61.2.2. FutureExoCache
61.3. eXo Cache extension
61.4. eXo Cache based on JBoss Cache
61.4.1. Configuring the ExoCacheFactory
61.4.2. Adding specific configuration for a cache
61.4.3. Adding a cache creator
61.4.4. Defining a cache
61.5. eXo Cache based on Infinispan
61.5.1. Configure the ExoCacheFactory
61.5.2. Add specific configuration for a cache
61.5.3. Add a cache creator
61.5.4. Define an infinispan cache instance
62. TransactionService
62.1. Base information
62.2. Existing TransactionService implementations
62.2.1. JOTM in standalone mode
62.2.2. Generic TransactionService based on the TransactionManagerLookup of JBoss Cache
62.2.3. Specific GenericTransactionService for JBoss Cache and Arjuna
62.2.4. Generic TransactionService based on the TransactionManagerLookup of Infinispan
62.2.5. Specific GenericTransactionService for Infinispan and Arjuna
62.2.6. A very specific TransactionService for JBoss AS
62.2.7. TransactionsEssentials in standalone mode
63. The data source provider
63.1. Description
63.2. Configuration
64. JNDI naming
64.1. Prerequisites
64.2. How it works
64.2.1. JNDI System property initialization
64.2.2. JNDI reference binding
64.3. Configuration examples
64.4. Recommendations for Application Developers
64.5. InitialContextInitializer API
65. Logs configuration
65.1. Introdution
65.2. Logs configuration initializer
65.3. Configuration examples
65.3.1. Log4J
65.3.2. JDK Logging
65.3.3. Commons Logging SimpleLogss
65.4. Tips and Troubleshooting
65.4.1. JBoss tips
65.4.2. Other tips
66. Manageability
66.1. Introduction
66.2. Managed framework API
66.2.1. Annotations
66.3. JMX Management View
66.3.1. JMX Annotations
66.4. Example
66.4.1. CacheService example
67. ListenerService
67.1. Asynchronous Event Broadcast
68. RPC Service
68.1. Description
68.2. Configuration
68.3. The SingleMethodCallCommand
III. eXoCore
69. eXo Core
69.1. eXo Core introduction
70. Database Creator
70.1. About
70.2. API
70.3. A configuration examples
70.4. An examples of a DDL script
71. Security Service
71.1. 1 Overview
71.2. 1 Framework
71.2.1. 1.1 ConversationState and ConversationRegistry
71.2.2. 1.1 Authenticator
71.3. Usage
71.3.1. JAAS login module
71.3.2. 1.1 Predefinded JAAS login modules
71.3.3. 1.1 J2EE container authentication
72. Spring Security Integration
72.1. Introduction
72.2. Installation
72.3. Configuration
72.3.1. JAAS disabling
72.3.2. Enabling spring security
72.3.3. security-context.xml
72.4. Login portlet example
72.4.1. Building the portlet
72.4.2. Setting up the login portal page
72.4.3. Customization of portal login and logout urls
72.4.4. A look at the login page
72.5. Integration strategies
72.5.1. Replication
72.6. Integration with eXo portal
72.7. Security context propagation to portlets
72.7.1. Portal side filter
72.7.2. Portlet side filter
72.8. Conclusion
73. Organization Service
73.1. Overview
73.2. Organizational Model
73.2.1. User
73.2.2. Group
73.2.3. Membership
73.3. Related articles and how-tos
74. Organization Service Initializer
75. Organization Listener
75.1. Overview
75.2. Writing your own listeners
75.2.1. UserEventListener
75.2.2. GroupEventListener
75.2.3. MembershipEventListener
75.3. 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. Overview
79.2. Quickstart
79.3. Configuration
79.3.1. Connection Settings
79.3.2. Organization Service Configuration
79.4. Advanced topics
79.4.1. Automatic directory population
79.4.2. Active Directory sample configuration
79.4.3. OpenLDAP dynlist overlays
80. Organization Service TCK tests configuration
80.1. Introduction
80.2. Maven pom.xml file configuration
80.3. Standalone container and Organization Service configuration
81. Tika Document Reader Service
81.1. Intro
81.2. Architecture
81.3. Configuration
81.4. Old-style DocumentReaders and Tika Parsers
81.4.1. How to make and register own DocumentReader
81.5. TikaDocumentReader features and notes
82. Digest Authentication
82.1. Overview
82.2. Server configuration
82.2.1. Tomcat Server configuration
82.2.2. Jetty server configuration
82.2.3. JBoss server configuration
82.3. OrganizationService implementation requirements
IV. eXoWS
83. eXo Web Services
83.1. eXo Web Services introduction
84. Introduction to the Representational State Transfer (REST)
84.1. Introduction
85. OverwriteDefaultProviders
85.1. Motivation
85.2. Usage
85.3. Example
86. RestServicesList Service
86.1. Overview.
86.2. Usage
86.2.1. HTML format
86.2.2. JSON format
87. Groovy Scripts as REST Services
87.1. Overview
87.2. Loading script and save it in JCR
87.3. Instantiation
87.4. Deploying newly created Class as RESTful service
87.5. Script Lifecycle Management
87.6. Getting node UUID example
87.7. Groovy script restrictions
88. Framework for cross-domain AJAX
88.1. Motivation
88.2. Scheme (how it works)
88.3. A Working Sequence:
88.4. How to use it
V. Frequently Asked Question
89. JCR FAQ
89.1. Kernel
89.1.1. What is the best, standardized way to get the instance of a service ?
89.2. JCR
89.2.1. JCR core
89.2.2. JCR extensions
89.2.3. WebDAV
VI. eXo JCR with GateIn
90. How to extend my GateIn instance?
90.1. Introduction
90.1.1. Overview
90.1.2. Motivations
90.2. Prerequisites
90.2.1. Removing all the hard coded portal container name (i.e. "portal")
90.2.2. Removing all the hard coded rest context name (i.e. "rest")
90.2.3. Removing all the hard coded realm name (i.e. "exo-domain")
90.2.4. Making your Http Filters compatible
90.2.5. Making your HttpServlets compatible
90.2.6. Making your HttpSessionListeners compatible
90.2.7. Use init tasks if you need a PortalContainer to initialize an Http Filter or an HttpServlet
90.2.8. Making your LoginModules compatible
90.2.9. Avoiding static modifier on component dependency
90.2.10. Avoid component initialization based on component dependency in the constructor
90.3. FAQ
90.3.1. What has changed since the previous versions?
90.3.2. What is the main purpose of a portal extension?
90.3.3. What is the main purpose of the starter?
90.3.4. How a portal and a portal container are related?
90.3.5. How to define and register a PortalContainerDefinition?
90.3.6. How the platform interprets the dependency order defined into the PortalContainerDefinition?
90.3.7. How to change the ServletContext name, the realm name and/or the rest context name of my portal without using a PortalContainerDefinition?
90.3.8. How to add new configuration file to a given portal from a war file?
90.3.9. How to create/define a portal extension?
90.3.10. How to deploy a portal extension?
90.3.11. How to create/define a new portal?
90.3.12. How to deploy a new portal?
90.3.13. How to import properly a configuration file using the prefix "war:"?
90.3.14. How to avoid duplicating configuration files just to rename a simple value?
90.3.15. How to add or change a Repository and/or a Workspace?
90.3.16. How to add new ResourceBundles to my portal?
90.3.17. How to overwrite existing ResourceBundles in my portal?
90.3.18. How to replace a groovy template of my portal?
90.3.19. How to add new Portal Configurations, Navigations, Pages or Portlet Preferences to my portal?
90.3.20. How to add new Http Filters to my portal without modifying the portal binary?
90.3.21. How to add new HttpSessionListeners and/or ServletContextListeners to my portal without modifying the portal binary?
90.3.22. How to add new HttpServlet to my portal without modifying the portal binary?
90.3.23. How to override or add a Context Parameter to my portal without modifying the portal binary?
90.3.24. Where can I found an example of how to extend my portal?
90.3.25. How to deploy the sample extension?
90.3.26. Where can I find an example of how to create a new portal?
90.3.27. How to deploy the sample portal?
90.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?
90.4. Recommendations
90.4.1. Don't ship your configuration files with your jar files?
90.4.2. Using a dedicated workspace/repository for your extension?
91. How to use AS Managed DataSource under JBoss AS
91.1. Configurations Steps
91.1.1. Declaring the datasources in the AS
91.1.2. Do not let eXo bind datasources explicitly