JBoss.orgCommunity Documentation

eXoJCR Reference Manual

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 this JCR is for?
2.2. But 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. Change existing node type
9.4. Remove node type
9.5. Practical How to
9.5.1. Add new PropertyDefinition
9.5.2. Add new child NodeDefinition
9.5.3. Change or removing existing PropertyDefinition or child NodeDefinition
9.5.4. Changing list of super types
10. Registry Service
10.1. Concept
10.2. The API
10.3. Configuration
11. Namespace altering
11.1. Add 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:
14. Multilanguage support in eXo JCR RDB backend
14.1. Intro
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. Index Adjustments
15.4.1. IndexingConfiguration
15.4.2. Index rules
15.4.3. Index 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
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. Enviorenment requirements
21.2.2. Enviorenment requirements
22. JBoss Cache configuration
22.1. JBoss cache configuration for indexer, lock manager and data container
22.2. JGroups configuration
22.3. Shipped JBoss Cache configuration templates
22.3.1. Data container template
22.3.2. Lock manager template
22.3.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 Configuraion
23.3.3. Template JBossCache Configuration
23.3.4. Data Types in Different Databases
24. QueryHandler configuration
24.1. How does it work?
24.2. Configuration
24.2.1. Common requirements
24.2.2. Query-handler configuration
24.2.3. JBoss-Cache template configuration
25. JBossTransactionsService
25.1. Introduction
25.2. Configuration
26. TransactionManagerLookup
26.1. Configuration
27. JCR Query Usecases
27.1. Intro
27.2. Query Lifecycle
27.2.1. Query Creation and Execution
27.2.2. Query Result Processing
27.2.3. Scoring
27.3. Query result settings
27.4. Type Constraints
27.5. Property Constraints
27.6. Path Constraint
27.7. Ordering specifing
27.8. Fulltext Search
27.9. Indexing rules and additional features
27.10. Query Examples
27.10.1. SetOffset and SetLimit
27.10.2. Find All Nodes
27.10.3. Find Nodes by Primary Type
27.10.4. Find Nodes by Mixin Type
27.10.5. Property Comparison
27.10.6. LIKE Constraint
27.10.7. Escaping in LIKE Statements
27.10.8. NOT Constraint
27.10.9. AND Constraint
27.10.10. OR Constraint
27.10.11. Property Existence Constraint
27.10.12. Find Nodes in a Case-Insensitive Way
27.10.13. Date Property Comparison
27.10.14. Node Name Constraint
27.10.15. Multivalue Property Comparison
27.10.16. Exact Path Constraint
27.10.17. Child Node Constraint
27.10.18. Find All Descendant Nodes
27.10.19. Sort Nodes by Property
27.10.20. Order by Descendant Nodes Property (XPath only)
27.10.21. Order by Score
27.10.22. Order by Path or Name
27.10.23. Fulltext Search by Property
27.10.24. Fulltext Search by All Properties in Node
27.10.25. Ignore Accent Symbols. New Analyzer Setting.
27.10.26. Find nt:file node by content of child jcr:content node
27.10.27. Change Priority of Node
27.10.28. Remove Nodes Property From Indexing Scope
27.10.29. Regular Expression as Property Name in Indexing Rules
27.10.30. Higlight Result of Fulltext Search
27.10.31. Search By Synonim
27.10.32. Regular Expression as Property Name in Indexing Rules
27.10.33. Check Spelling of Phrase
27.10.34. Find Similar Nodes
27.11. Tips and tricks
27.11.1. XPath queries containing node names starting with a number
28. Searching Repository Content
28.1. Introduction
28.2. Bi-directional RangeIterator (since 1.9)
28.3. Fuzzy Searches (since 1.0)
28.4. SynonymSearch (since 1.9)
28.5. Highlighting (Since 1.9)
28.5.1. DefaultXMLExcerpt
28.5.2. DefaultHTMLExcerpt
28.5.3. How to use it
28.6. SpellChecker
28.6.1. How do I use it?
28.7. Similarity (Since 1.12)
29. Fulltext Search And Affecting Settings
29.1. Property content indexing
29.2. Lucene Analyzers
29.3. How are different properties indexed?
29.4. Fulltext search query examples
29.5. Different analyzers in action
30. WebDAV
30.1. Related documents
30.2. Introduction
30.3. Configuration
30.4. Screenshots
30.4.1. MS Internet Explorer
30.4.2. Dav Explorer
30.4.3. Xythos Drive
30.4.4. Microsoft Office 2003
30.4.5. Ubuntu Linux
30.5. Comparison table of WebDav and JCR commands
31. FTP
31.1. Introdution
31.2. Configuration Parameters
31.2.1. command-port:
31.2.2. data-min-port & data-max-port
31.2.3. system
31.2.4. client-side-encoding
31.2.5. def-folder-node-type
31.2.6. def-file-node-type
31.2.7. def-file-mime-type
31.2.8. cache-folder-name
31.2.9. upload-speed-limit
31.2.10. download-speed-limit
31.2.11. timeout
32. eXo JCR Backup Service
32.1. Concept
32.2. How it works
32.2.1. Implementation details
32.2.2. Work basics
32.3. Configuration
32.4. Usage
32.4.1. Perform a Backup
32.4.2. Perform a Restore
32.5. Scheduling (experimental)
33. HTTPBackupAgent and backup client
33.1. Introduction
33.2. HTTPBackupAgent
33.2.1. HTTPBackupAgent methods
33.2.2. HTTPBackupAgent Configuration
33.3. Backup Client
33.4. Backup Client Usage
33.4.1. Build application
33.4.2. Run application
33.4.3. Get information about backup service
33.4.4. Start full backup
33.4.5. Start full and incremental backup on a single workspace
33.4.6. Get information about the current backups (in progress)
33.4.7. Get information about the current backup by 'backup_id'
33.4.8. Stop backup by "backup_id"
33.4.9. Get information about the completed (ready to restore) backups
33.4.10. Restore to workspace
33.4.11. Get information about the current restore
33.5. Full Example for create backup and restore it for workspace 'backup'
33.5.1. Create backup
33.5.2. Get information about current backups
33.5.3. Stop backup by id
33.5.4. Delete the workspace "backup" and close opened sessions on this workspace
33.5.5. Restore the workspace "backup"
33.5.6. Get information about restore for workspace /repository/backup
34. Search index backup
34.1. Manual backup (file copy)
34.2. Consistency Requirements
34.3. JCR Backup Service
35. eXo JCR statistics
35.1. Statistics on the Database Access Layer
35.2. Statistics on the JCR API accesses
35.3. Statistics Manager
36. Access Control
36.1. Standard Action Permissions
36.2. eXo Access Control
36.2.1. Principal and Identity
36.2.2. ACL
36.2.3. Notes
36.2.4. Example
36.2.5. Java API
37. Access Control Extension
37.1. Prerequisites
37.2. Overview
37.3. Access Context Action
37.4. The Invocation Context
37.5. Custom Extended Access Manager
37.6. Example of a custom Access Manager
38. Link Producer Service
39. Binary Values Processing
39.1. Configuration
39.2. Usage
39.3. Value implementations
40. JCR Resources:
41. JCR Workspace Data Container (architecture contract)
41.1. Goals
41.2. Concepts
41.2.1. Container and connection
41.2.2. Value storages
41.2.3. Lifecycle
41.2.4. Value storage lifecycle
41.3. Requirements
41.3.1. Read operations
41.3.2. Write operations
41.3.3. State operations
41.3.4. Validation of write operations
41.3.5. Consistency of save
41.4. Value storages API
41.4.1. Storages provider:
41.4.2. Value storage plugin
41.4.3. Value I/O channel
41.4.4. Transaction support via channel
42. How-to implement Workspace Data Container
42.1. Short intro into Workspace data container implementation practices:
42.2. Value storage usage notes:
II. eXoKernel
43. eXo Kernel
43.1. eXo Kernel introduction
44. ExoContainer info
44.1. Container hierarchy
45. Service Configuration for Beginners
45.1. Objective
45.2. Requirements
45.3. Services
45.4. Configuration File
45.5. Execution Modes
45.6. Containers
45.7. Configuration Retrieval
45.7.1. RootContainer
45.7.2. PortalContainer
45.7.3. StandaloneContainer
45.8. Service instantiation
45.9. Miscellaneous
45.9.1. Startable interface
45.9.2. Inversion of Control
45.9.3. More Containers
45.9.4. Single Implementation Services
45.9.5. Configuration properties
45.9.6. Configuration Logging
45.10. Further Reading
46. Service Configuration in Detail
46.1. Objectives
46.2. Requirements
46.3. Sample Service
46.3.1. Java Class
46.3.2. First configuration file
46.3.3. Init Parameters
46.3.4. Service Access
46.4. Parameters
46.4.1. Value-Param
46.4.2. Properties-Param
46.4.3. Object-Param
46.4.4. Collection
46.5. External Plugin
46.6. Import
46.7. System properties
47. Container Configuration
47.1. Intro
47.2. Kernel configuration namespace
47.3. Understanding How configuration files are loaded
47.3.1. Configuration Retrieval
47.3.2. Advanced concepts for the PortalContainers
47.4. System property configuration
47.4.1. Properties init param
47.4.2. Properties URL init param
47.4.3. System Property configuration of the properties URL
47.5. Runtime configuration profiles
47.5.1. Profiles activation
47.5.2. Profiles configuration
47.6. Component request life cycle
47.6.1. Component request life cycle contract
47.6.2. Request life cycle
47.6.3. When request life cycle is triggered
48. Inversion Of Control
48.1. Overview
48.2. How
48.3. Injection
48.4. Side effects
49. Services Wiring
49.1. Overview
49.2. Portal Instance
49.3. Introduction to the XML schema of the configuration.xml file
49.4. Configuration retrieval and log of this retrieval
50. Component Plugin Priority
51. Understanding the ListenerService
51.1. Objectives
51.2. What is the ListenerService ?
51.3. How does it work?
51.3.1. Registering a listener
51.3.2. Triggering an event
51.4. How to configure a listener?
51.5. Concrete Example
52. Initial Context Binder service
52.1. API
52.2. Configuration
53. Job Scheduler Service
53.1. What is Job Scheduler
53.2. How does Job Scheduler work?
53.2.1. How can Job Scheduler Service be used in Kernel?
53.2.2. Samples
53.2.3. Where is Job Scheduler Service used in eXo Products?
53.3. Advantages of Job Scheduler
53.4. Reference
54. eXo Cache
54.1. Basic concepts
54.2. eXo Cache extension
54.3. eXo Cache based on JBoss Cache
54.3.1. Configure the ExoCacheFactory
54.3.2. Add specific configuration for a cache
54.3.3. Add a cache creator
54.3.4. Define a cache
55. TransactionService
55.1. Base information
56. JNDI naming
56.1. Prerequisites
56.2. How it works
56.2.1. JNDI System property initialization
56.2.2. JNDI reference binding
56.3. Configuration examples
56.4. Recommendations for Application Developers
56.5. InitialContextInitializer API
57. Logs configuration
57.1. Introdution
57.2. Logs configuration initializer
57.3. Configuration examples
57.3.1. Log4J
57.3.2. JDK Logging
57.3.3. Commons Logging SimpleLog
57.4. Tips and Troubleshooting
57.4.1. JBoss tips
57.4.2. Other tips
III. eXoCore
58. eXo Core
58.1. eXo Core introduction
59. Database Creator
59.1. About
59.2. API
59.3. A configuration examples
59.4. An examples of a DDL script
60. Security Service
60.1. 1 Overview
60.2. 1 Framework
60.2.1. 1.1 ConversationState and ConversationRegistry
60.2.2. 1.1 Authenticator
60.3. Usage
60.3.1. JAAS login module
60.3.2. 1.1 Predefinded JAAS login modules
60.3.3. 1.1 J2EE container authentication
61. Spring Security Integration
61.1. Introduction
61.2. Installation
61.3. Configuration
61.3.1. JAAS disabling
61.3.2. Enabling spring security
61.3.3. security-context.xml
61.4. Login portlet example
61.4.1. Building the portlet
61.4.2. Setting up the login portal page
61.4.3. Customization of portal login and logout urls
61.4.4. A look at the login page
61.5. Integration strategies
61.5.1. Replication
61.6. Integration with eXo portal
61.7. Security context propagation to portlets
61.7.1. Portal side filter
61.7.2. Portlet side filter
61.8. Conclusion
62. Organization Service
62.1. Overview
62.2. Organizational Model
62.2.1. User
62.2.2. Group
62.2.3. Membership
62.3. Related articles and how-tos
63. Organization Service Initializer
64. Organization Listener
64.1. Overview
64.2. Writing your own listeners
64.2.1. UserEventListener
64.2.2. GroupEventListener
64.2.3. MembershipEventListener
64.3. Registering your listeners
65. Update ConversationState when user's Membership changed
66. DB Schema creator service (JDBC implementation)
67. Database Configuration for Hibernate
67.1. Generic configuration
67.2. Example DB configuration
67.3. Register custom Hibernate XML files into the service
68. LDAP Configuration
68.1. Overview
68.2. Quickstart
68.3. Configuration
68.3.1. Connection Settings
68.3.2. Organization Service Configuration
68.4. Advanced topics
68.4.1. Automatic directory population
68.4.2. Active Directory sample configuration
68.4.3. OpenLDAP dynlist overlays
IV. eXoWS
69. eXo Web Services
69.1. eXo Web Services introduction
70. Introduction to the Representational State Transfer (REST)
70.1. Introduction
71. RestServicesList Service
71.1. Overview.
71.2. Usage
71.2.1. HTML format
71.2.2. JSON format
72. Groovy Scripts as REST Services
72.1. Overview
72.2. Loading script and save it in JCR
72.3. Instantiation
72.4. Deploy newly created Class as RESTful service
72.5. Script Lifecycle Management
72.6. Get node UUID example
72.7. Groovy script restrictions
73. Framework for cross-domain AJAX
73.1. Motivation
73.2. Scheme (how it works)
73.3. A Working Sequence:
73.4. How to use it
V. Frequently Asked Question
74. JCR FAQ
74.1. Kernel
74.1.1. What is the best, standardized way to get the instance of a service ?
74.2. JCR
74.2.1. JCR core
74.2.2. JCR extensions
74.2.3. WebDAV