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
13.14. Getting the effective configuration at Runtime of all the repositories
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
22.3. How properly stop the node
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. 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. Intro
29.2. Dependencies
29.3. How it works
29.4. Configuration
29.5. RepositoryCreationService Interface
29.6. Conclusions and restrictions
30. JCR Query Usecases
30.1. Intro
30.2. Query Lifecycle
30.2.1. Query Creation and Execution
30.2.2. Query Result Processing
30.2.3. Scoring
30.3. Query result settings
30.4. Type Constraints
30.5. Property Constraints
30.6. Path Constraint
30.7. Ordering specifing
30.8. Fulltext Search
30.9. Indexing rules and additional features
30.10. Query Examples
30.10.1. SetOffset and SetLimit
30.10.2. Finding All Nodes
30.10.3. Finding Nodes by Primary Type
30.10.4. Finding Nodes by Mixin Type
30.10.5. Property Comparison
30.10.6. LIKE Constraint
30.10.7. Escaping in LIKE Statements
30.10.8. NOT Constraint
30.10.9. AND Constraint
30.10.10. OR Constraint
30.10.11. Property Existence Constraint
30.10.12. Finding Nodes in a Case-Insensitive Way
30.10.13. Date Property Comparison
30.10.14. Node Name Constraint
30.10.15. Multivalue Property Comparison
30.10.16. Exact Path Constraint
30.10.17. Child Node Constraint
30.10.18. Finding All Descendant Nodes
30.10.19. Sorting Nodes by Property
30.10.20. Ordering by Descendant Nodes Property (XPath only)
30.10.21. Ordering by Score
30.10.22. Ordering by Path or Name
30.10.23. Fulltext Search by Property
30.10.24. Fulltext Search by All Properties in Node
30.10.25. Ignoring Accent Symbols. New Analyzer Setting.
30.10.26. Finding nt:file node by content of child jcr:content node
30.10.27. Changing Priority of Node
30.10.28. Removing Nodes Property From Indexing Scope
30.10.29. Regular Expression as Property Name in Indexing Rules
30.10.30. High-lighting Result of Fulltext Search
30.10.31. Searching By Synonim
30.10.32. Checking the spelling of Phrase
30.10.33. Finding Similar Nodes
30.11. Tips and tricks
30.11.1. XPath queries containing node names starting with a number
31. Searching Repository Content
31.1. Introduction
31.2. Bi-directional RangeIterator (since 1.9)
31.3. Fuzzy Searches (since 1.0)
31.4. SynonymSearch (since 1.9)
31.5. High-lighting (Since 1.9)
31.5.1. DefaultXMLExcerpt
31.5.2. DefaultHTMLExcerpt
31.5.3. How to use it
31.6. SpellChecker
31.6.1. How do I use it?
31.7. 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. "Lazy" child nodes iteration
33.1.1. Concept
33.1.2. API and usage
33.1.3. Configuration
33.1.4. Implementation notices
34. WebDAV
34.1. Related documents
34.2. Introduction
34.3. Configuration
34.4. Screenshots
34.4.1. MS Internet Explorer
34.4.2. Dav Explorer
34.4.3. Xythos Drive
34.4.4. Microsoft Office 2003
34.4.5. Ubuntu Linux
34.5. Comparison table of WebDav and JCR commands
34.6. Restrictions
34.6.1. Windows 7
34.6.2. Microsoft Office 2010
35. FTP
35.1. Introdution
35.2. Configuration Parameters
35.2.1. command-port:
35.2.2. data-min-port & data-max-port
35.2.3. system
35.2.4. client-side-encoding
35.2.5. def-folder-node-type
35.2.6. def-file-node-type
35.2.7. def-file-mime-type
35.2.8. cache-folder-name
35.2.9. upload-speed-limit
35.2.10. download-speed-limit
35.2.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. Introduction
37.2. HTTPBackupAgent
37.2.1. HTTPBackupAgent methods
37.2.2. HTTPBackupAgent Configuration
37.3. Backup Client
37.4. Backup Client Usage
37.4.1. Building application
37.4.2. Running application
37.4.3. Getting information about backup service
37.4.4. Starting full backup
37.4.5. Starting full and incremental backup on a single workspace
37.4.6. Getting information about the current backups (in progress)
37.4.7. Getting information about the current backup by 'backup_id'
37.4.8. Stopping backup by "backup_id"
37.4.9. Getting information about the completed (ready to restore) backups
37.4.10. Restoring to workspace
37.4.11. Getting information about the current restore
37.4.12. Restoring workspace and remove exists workspace
37.4.13. Restoring workspace from backup set
37.4.14. Restoring workspace from backup set and remove exists workspace
37.4.15. Restoring workspace with original configuation
37.4.16. Restoring workspace with original configuation and remove exists workspace
37.4.17. Restoring workspace from backup set with original configuation
37.4.18. Restoring workspace from backup set with original configuation and remove exists workspace
37.4.19. Restoring repository
37.4.20. Restoring repository and remove exists repository
37.4.21. Restoring repository from backup set
37.4.22. Restoring repository from backup set and remove exists repository
37.4.23. Restoring repository with original configuation
37.4.24. Restoring repository with original configuation and remove exists repository
37.4.25. Restoring repository from backup set with original configuation
37.4.26. Restoring repository from backup set with original configuation and remove exists repository
37.5. Full example about creating backup and restoring it for workspace 'backup'
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 workspace "backup" and close opened sessions on this workspace
37.5.5. Restoring the workspace "backup"
37.5.6. Getting information about restore for workspace /repository/backup
37.6. Full example about creating backup and restoring it for repository 'repository'
37.6.1. Creating backup
37.6.2. Getting information about current backups
37.6.3. Stopping backup by id
37.6.4. Deleting the repository "repository" and close all opened sessions
37.6.5. Restoring the repository "repository"
37.6.6. Getting information about restore for repository 'repository'
38. Use external backup tool
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. JMX-based consistency tool
41. JTA
42. The JCA Resource Adapter
42.1. Overview
42.2. The SessionFactory
42.3. Configuration
42.4. 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. Overview
44.3. Access Context Action
44.4. The Invocation Context
44.5. Custom Extended Access Manager
44.6. 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. Goals
48.2. Concepts
48.2.1. Container and connection
48.2.2. Value storages
48.2.3. Lifecycle
48.2.4. Value storage lifecycle
48.3. Requirements
48.3.1. Read operations
48.3.2. Write operations
48.3.3. State operations
48.3.4. Validation of write operations
48.3.5. Consistency of save
48.4. Value storages API
48.4.1. Storages provider:
48.4.2. Value storage plugin
48.4.3. Value I/O channel
48.4.4. Transaction support via channel
49. How-to implement Workspace Data Container
49.1. Short intro about Workspace data container implementation practices:
49.2. Notes on Value storage usage:
50. DBCleanService
50.1. Description
50.2. Need to clean only single workspace
50.3. Need to clean the whole repository
51. JCR Performance Tuning Guide
51.1. Introduction
51.2. JCR Performance and Scalability
51.2.1. Cluster configuration
51.2.2. JCR Clustered Performance
51.3. Performance Tuning Guide
51.3.1. JBoss AS Tuning
51.3.2. JCR Cache Tuning
51.3.3. Clustering
51.3.4. JVM parameters
II. eXoKernel
52. eXo Kernel
52.1. eXo Kernel introduction
53. ExoContainer info
53.1. Container hierarchy
54. Service Configuration for Beginners
54.1. Objective
54.2. Requirements
54.3. Services
54.4. Configuration File
54.5. Execution Modes
54.6. Containers
54.7. Configuration Retrieval
54.7.1. RootContainer
54.7.2. PortalContainer
54.7.3. StandaloneContainer
54.8. Service instantiation
54.9. Miscellaneous
54.9.1. Startable interface
54.9.2. Inversion of Control
54.9.3. More Containers
54.9.4. Single Implementation Services
54.9.5. Configuration properties
54.9.6. Configuration Logging
54.10. Further Reading
55. Service Configuration in Detail
55.1. Objectives
55.2. Requirements
55.3. Sample Service
55.3.1. Java Class
55.3.2. First configuration file
55.3.3. Init Parameters
55.3.4. Service Access
55.4. Parameters
55.4.1. Value-Param
55.4.2. Properties-Param
55.4.3. Object-Param
55.4.4. Collection
55.5. External Plugin
55.6. Import
55.7. System properties
55.8. Understanding the prefixes supported by the configuration manager
56. Container Configuration
56.1. Intro
56.2. Kernel configuration namespace
56.3. Understanding how configuration files are loaded
56.3.1. Configuration Retrieval
56.3.2. Advanced concepts for the PortalContainers
56.4. System property configuration
56.4.1. Properties init param
56.4.2. Properties URL init param
56.4.3. System Property configuration of the properties URL
56.5. Variable Syntaxes
56.6. Runtime configuration profiles
56.6.1. Profiles activation
56.6.2. Profiles configuration
56.7. Component request life cycle
56.7.1. Component request life cycle contract
56.7.2. Request life cycle
56.7.3. When request life cycle is triggered
57. Inversion Of Control
57.1. Overview
57.2. How
57.3. Injection
57.4. Side effects
58. Services Wiring
58.1. Overview
58.2. Portal Instance
58.3. Introduction to the XML schema of the configuration.xml file
58.4. Configuration retrieval and log of this retrieval
59. Component Plugin Priority
60. Understanding the ListenerService
60.1. Objectives
60.2. What is the ListenerService ?
60.3. How does it work?
60.3.1. Registering a listener
60.3.2. Triggering an event
60.4. How to configure a listener?
60.5. Concrete Example
61. Initial Context Binder
61.1. API
62. Job Scheduler Service
62.1. What is Job Scheduler?
62.2. Where is Job Scheduler Service used in eXo Products?
62.3. How does Job Scheduler work?
62.3.1. How can Job Scheduler Service be used in Kernel?
62.3.2. Samples
62.4. Reference
63. eXo Cache
63.1. Basic concepts
63.2. Advanced concepts
63.2.1. Invalidation
63.2.2. FutureExoCache
63.3. eXo Cache extension
63.4. eXo Cache based on JBoss Cache
63.4.1. Configuring the ExoCacheFactory
63.4.2. Adding specific configuration for a cache
63.4.3. Adding a cache creator
63.4.4. Defining a cache
63.5. eXo Cache based on Infinispan
63.5.1. Configure the ExoCacheFactory
63.5.2. Add specific configuration for a cache
63.5.3. Add a cache creator
63.5.4. Define an infinispan cache instance
63.5.5. Using Infinispan in distributed mode
64. TransactionService
64.1. Base information
64.2. Existing TransactionService implementations
64.2.1. JOTM in standalone mode
64.2.2. Generic TransactionService based on the TransactionManagerLookup of JBoss Cache
64.2.3. Specific GenericTransactionService for JBoss Cache and Arjuna
64.2.4. Generic TransactionService based on the TransactionManagerLookup of Infinispan
64.2.5. Specific GenericTransactionService for Infinispan and Arjuna
64.2.6. A very specific TransactionService for JBoss AS
64.2.7. TransactionsEssentials in standalone mode
65. The data source provider
65.1. Description
65.2. Configuration
66. JNDI naming
66.1. Prerequisites
66.2. How it works
66.2.1. JNDI System property initialization
66.2.2. JNDI reference binding
66.3. Configuration examples
66.4. Recommendations for Application Developers
66.5. InitialContextInitializer API
67. Logs configuration
67.1. Introdution
67.2. Logs configuration initializer
67.3. Configuration examples
67.3.1. Log4J
67.3.2. JDK Logging
67.3.3. Commons Logging SimpleLogss
67.4. Tips and Troubleshooting
67.4.1. JBoss tips
67.4.2. Other tips
68. Manageability
68.1. Introduction
68.2. Managed framework API
68.2.1. Annotations
68.3. JMX Management View
68.3.1. JMX Annotations
68.4. Example
68.4.1. CacheService example
69. ListenerService
69.1. Asynchronous Event Broadcast
70. RPC Service
70.1. Description
70.2. Configuration
70.3. The SingleMethodCallCommand
III. eXoCore
71. eXo Core
71.1. eXo Core introduction
72. Database Creator
72.1. About
72.2. API
72.3. A configuration examples
72.4. An examples of a DDL script
73. Security Service
73.1. 1 Overview
73.2. 1 Framework
73.2.1. 1.1 ConversationState and ConversationRegistry
73.2.2. 1.1 Authenticator
73.3. Usage
73.3.1. JAAS login module
73.3.2. 1.1 Predefinded JAAS login modules
73.3.3. 1.1 J2EE container authentication
74. Spring Security Integration
74.1. Introduction
74.2. Installation
74.3. Configuration
74.3.1. JAAS disabling
74.3.2. Enabling spring security
74.3.3. security-context.xml
74.4. Login portlet example
74.4.1. Building the portlet
74.4.2. Setting up the login portal page
74.4.3. Customization of portal login and logout urls
74.4.4. A look at the login page
74.5. Integration strategies
74.5.1. Replication
74.6. Integration with eXo portal
74.7. Security context propagation to portlets
74.7.1. Portal side filter
74.7.2. Portlet side filter
74.8. Conclusion
75. Organization Service
75.1. Overview
75.2. Organizational Model
75.2.1. User
75.2.2. Group
75.2.3. Membership
75.3. Custom Organization Service implementation instructions
75.3.1. Basic entities implementation
75.3.2. Unit handlers implementation
75.3.3. Extending BaseOrganizationService class
75.3.4. Verification of compliance
75.4. Related articles and how-tos
76. Organization Service Initializer
77. Organization Listener
77.1. Overview
77.2. Writing your own listeners
77.2.1. UserEventListener
77.2.2. GroupEventListener
77.2.3. MembershipEventListener
77.3. Registering your listeners
78. Update ConversationState when user's Membership changed
79. DB Schema creator service (JDBC implementation)
80. Database Configuration for Hibernate
80.1. Generic configuration
80.2. Example DB configuration
80.3. Registering custom Hibernate XML files into the service
81. LDAP Configuration
81.1. Overview
81.2. Quickstart
81.3. Configuration
81.3.1. Connection Settings
81.3.2. Organization Service Configuration
81.4. Advanced topics
81.4.1. Automatic directory population
81.4.2. Active Directory sample configuration
81.4.3. OpenLDAP dynlist overlays
82. Organization Service TCK tests configuration
82.1. Introduction
82.2. Maven pom.xml file configuration
82.3. Standalone container and Organization Service configuration
83. Tika Document Reader Service
83.1. Intro
83.2. Architecture
83.3. Configuration
83.4. Old-style DocumentReaders and Tika Parsers
83.4.1. How to make and register own DocumentReader
83.5. TikaDocumentReader features and notes
84. Digest Authentication
84.1. Overview
84.2. Server configuration
84.2.1. Tomcat Server configuration
84.2.2. Jetty server configuration
84.2.3. JBoss server configuration
84.3. OrganizationService implementation requirements
IV. eXoWS
85. eXo Web Services
85.1. eXo Web Services introduction
86. Introduction to the Representational State Transfer (REST)
86.1. Introduction
87. OverwriteDefaultProviders
87.1. Motivation
87.2. Usage
87.3. Example
88. RestServicesList Service
88.1. Overview.
88.2. Usage
88.2.1. HTML format
88.2.2. JSON format
89. Groovy Scripts as REST Services
89.1. Overview
89.2. Loading script and save it in JCR
89.3. Instantiation
89.4. Deploying newly created Class as RESTful service
89.5. Script Lifecycle Management
89.6. Getting node UUID example
89.7. Groovy script restrictions
90. Framework for cross-domain AJAX
90.1. Motivation
90.2. Scheme (how it works)
90.3. A Working Sequence:
90.4. How to use it
V. Frequently Asked Question
91. JCR FAQ
91.1. Kernel
91.1.1. What is the best, standardized way to get the instance of a service ?
91.2. JCR
91.2.1. JCR core
91.2.2. JCR extensions
91.2.3. WebDAV
VI. eXo JCR with GateIn
92. How to extend my GateIn instance?
92.1. Introduction
92.1.1. Overview
92.1.2. Motivations
92.2. Prerequisites
92.2.1. Removing all the hard coded portal container name (i.e. "portal")
92.2.2. Removing all the hard coded rest context name (i.e. "rest")
92.2.3. Removing all the hard coded realm name (i.e. "exo-domain")
92.2.4. Making your Http Filters compatible
92.2.5. Making your HttpServlets compatible
92.2.6. Making your HttpSessionListeners compatible
92.2.7. Use init tasks if you need a PortalContainer to initialize an Http Filter or an HttpServlet
92.2.8. Making your LoginModules compatible
92.2.9. Avoiding static modifier on component dependency
92.2.10. Avoid component initialization based on component dependency in the constructor
92.3. FAQ
92.3.1. What has changed since the previous versions?
92.3.2. What is the main purpose of a portal extension?
92.3.3. What is the main purpose of the starter?
92.3.4. How a portal and a portal container are related?
92.3.5. How to define and register a PortalContainerDefinition?
92.3.6. How the platform interprets the dependency order defined into the PortalContainerDefinition?
92.3.7. How to change the ServletContext name, the realm name and/or the rest context name of my portal without using a PortalContainerDefinition?
92.3.8. How to add new configuration file to a given portal from a war file?
92.3.9. How to create/define a portal extension?
92.3.10. How to deploy a portal extension?
92.3.11. How to create/define a new portal?
92.3.12. How to deploy a new portal?
92.3.13. How to import properly a configuration file using the prefix "war:"?
92.3.14. How to avoid duplicating configuration files just to rename a simple value?
92.3.15. How to add or change a Repository and/or a Workspace?
92.3.16. How to add new ResourceBundles to my portal?
92.3.17. How to overwrite existing ResourceBundles in my portal?
92.3.18. How to replace a groovy template of my portal?
92.3.19. How to add new Portal Configurations, Navigations, Pages or Portlet Preferences to my portal?
92.3.20. How to add new Http Filters to my portal without modifying the portal binary?
92.3.21. How to add new HttpSessionListeners and/or ServletContextListeners to my portal without modifying the portal binary?
92.3.22. How to add new HttpServlet to my portal without modifying the portal binary?
92.3.23. How to override or add a Context Parameter to my portal without modifying the portal binary?
92.3.24. Where can I found an example of how to extend my portal?
92.3.25. How to deploy the sample extension?
92.3.26. Where can I find an example of how to create a new portal?
92.3.27. How to deploy the sample portal?
92.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?
92.4. Recommendations
92.4.1. Don't ship your configuration files with your jar files?
92.4.2. Using a dedicated workspace/repository for your extension?
93. How to use AS Managed DataSource under JBoss AS
93.1. Configurations Steps
93.1.1. Declaring the datasources in the AS
93.1.2. Do not let eXo bind datasources explicitly