Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
CDO/Server Configuration Reference
Contents
- 1 Example
- 2 Element cdoServer
- 2.1 Element acceptor
- 2.2 Element repository
- 2.3 Element store
- 2.3.1 Property connectionKeepAlivePeriod
- 2.3.2 Property readerPoolCapacity
- 2.3.3 Property writerPoolCapacity
- 2.3.4 Element mappingStrategy
- 2.3.4.1 Property toManyReferences
- 2.3.4.2 Property toOneReferences
- 2.3.4.3 Property maxTableNameLength
- 2.3.4.4 Property maxFieldNameLength
- 2.3.4.5 Property tableNamePrefix
- 2.3.4.6 Property qualifiedNames
- 2.3.4.7 Property forceNamesWithID
- 2.3.4.8 Property fieldConstructionTracking
- 2.3.4.9 Property objectTypeCacheSize (since cdo.server.db 4.0)
- 2.3.4.10 Property columnTypeModifier (since cdo.server.db 4.2)
- 2.3.4.11 Property forceIndexes (since cdo.server.db 4.4)
- 2.3.5 Element dbAdapter
- 2.3.6 Element dataSource
Example
The CDOServerApplication is configured with the cdo-server.xml
file. It must be located in the folder that you declare through the system property net4j.config
.
Checkout this example from Git and modify it for your needs: http://git.eclipse.org/c/cdo/cdo.git/tree/plugins/org.eclipse.emf.cdo.server.product/config/cdo-server.xml.
The subsequent sections explain the used XML Elements.
Element cdoServer
The root element of the cdo-server.xml
file. It can contain zero, one or several acceptor elements and zero, one or several repository elements.
Element acceptor
Defines an IAcceptor
instance. Please refer to the Net4j documentation for details about acceptors and connectors.
The type
attribute corresponds to the type of an acceptor factory that is contributed via the org.eclipse.net4j.util.factories
extension point with a product group of org.eclipse.net4j.acceptors
. The remaining attributes depend on the specified type attribute value. The following values are possible with the shipped distribution (subject to user supplied extension):
- tcp: Acceptor for fast, new I/O based socket connections. The following additional attributes are recognized:
- listenAddr: The network address the server socket shall be bound to. A value of
"0.0.0.0"
is the default (whole attribute can be omitted) and tells the socket to listen on all available addresses. - port: The network port the server socket shall be bound to. A value of
"2036"
is the default (whole attribute can be omitted).
- listenAddr: The network address the server socket shall be bound to. A value of
- jvm: Acceptor for JVM internal (non-socket based ) connections. Currently not supported by the
Net4Configurator
.
The acceptor element can contain zero or one negotiator element(s).
Please note that the acceptor element is likely to be moved to a separate Net4j configuration file in the future.
Element negotiator
Defines an INegotiator
instance to be used by the connectors created by an acceptor (defined by the enclosing acceptor element). Please refer to the Net4j documentation for details about negotiators and the pluggable security concept that can be used for authentication and authorization.
The type
attribute corresponds to the type of a negotiator factory that is contributed via the org.eclipse.net4j.util.factories
extension point with a product group of org.eclipse.net4j.negotiators
. The remaining attributes depend on the specified type attribute value. The following values are possible with the shipped distribution (subject to user supplied extension):
- challenge: Negotiator for simple yet effective and cryptographically secure challenge/response based negotiations. The following additional attributes are recognized:
- description: The absolute path to a file in the local file system that contains the credentials of the users in the form
userid: password
.
- description: The absolute path to a file in the local file system that contains the credentials of the users in the form
Element repository
Defines an IRepository
instance.
The name
attribute uniquely identifies a repository in the scope of a repository configurator.
The repository element can contain several property elements (see below) and must contain exactly one store element.
Property overrideUUID
Specifies a constant UUID for the repository. If omitted the repository will be created with a random UUID. The format of an override UUID is not further specified but should respect the file naming conventions of the used operating system.
Overriding the default random UUID can be useful if you have scripts that operate on the file system folder that is created on the server for each repository and named after the repository UUID.
Property supportingAudits
Specifies whether the repository will support audit views or not. Please note that a repository can only support audit views if its store supports audit views, as well:
Store Implementation | Allowed Values | Default Value |
---|---|---|
org.eclipse.emf.cdo.server.internal.db.DBStore | true/false | true, if the used mapping strategy supports audits |
org.eclipse.emf.cdo.internal.server.mem.MEMStore | true/false | true |
org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore | false | false |
org.eclipse.emf.cdo.server.internal.objectivity.ObjectivityStore | true/false | false |
org.eclipse.emf.cdo.server.internal.db4o.DB4OStore | true/false | false |
The shipped DB store does support audit views. Note also that it will not delete or update rows for modified objects if audits are supported. All revised state of the repository will be kept in the DB which can result in databases growing very large!
Property supportingBranches
Specifies whether the repository will support the creation and usage of branches below the always existing main branch or not. Please note that a repository can only support branches if its store supports branches, as well:
Store Implementation | Allowed Values | Default Value |
---|---|---|
org.eclipse.emf.cdo.server.internal.db.DBStore | true/false | true, if the used mapping strategy supports branches |
org.eclipse.emf.cdo.internal.server.mem.MEMStore | true/false | true |
org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore | false | false |
org.eclipse.emf.cdo.server.internal.objectivity.ObjectivityStore | true/false | false |
org.eclipse.emf.cdo.server.internal.db4o.DB4OStore | true/false | false |
Also note that branching support always requires auditing support!
Property supportingEcore
Specifies whether the repository will support the storage of instances of the Ecore (meta meta) model or not.
With the advent of the legacy mode (support for models not generated as CDO native models) in CDO 3.0 you can store instances of any model in CDO repositories. Whether these models have been generated for CDO or not only influences their characteristics (scalability, performance, etc.). As a consequence you can also store instances of the Ecore (meta meta) model in CDO Repositories. Since Ecore has always been registered in all package registries the legacy mode would lead to the creation of mapped tables in many types of stores, even if you never planned to store instances of Ecore.
Property serializeCommits
Specifies whether the repository will serialize commit operations by utilizing a lock or not.
Some stores, such as the LissomeStore, require commit operations to be serialized.
Property ensureReferentialIntegrity
Specifies whether the repository will detect and reject commits that would leave stale references in the object graph. Valid values: false
(default) or true
.
Property allowInterruptRunningQueries
Specifies whether the repository will cancel a scheduled query job if it is alreading running. Some underlying stores (e.g. DBStore with a Derby database) might not be able to deal with this cleanly. For such stores, this parameter can be set to false
.
Property idGenerationLocation
Specifies whether the repository will expect clients to generate IDs for new objects or whether it will ask the backend store to generate them. Valid values: STORE
(default) or CLIENT
.
Element store
Defines an IStore
instance. Please refer to CDO Storage Framework for details about stores, store readers and store writers.
The type
attribute corresponds to the type of a store factory that is contributed via the org.eclipse.emf.cdo.server.storeFactory
extension point. The remaining attributes depend on the specified type attribute value. The following values are possible with the shipped distribution (subject to user supplied extension):
- mem: Store without real persistence. A repository with a mem store can function properly as long as the the server is not restarted. No additional attributes are recognized.
- db: Store that connects via JDBC to a relational database and manages persistent revisions and models through a built-in O/R mapper, see CDO/DB Store. A DB store element can contain the following nested elements:
- hibernate: Store that uses Teneo/Hibernate, see CDO/Hibernate Store.
- objectivity: Store that uses Objectivity/DB, see CDO/Objectivity Store.
- mongodb: Store that uses MongoDB, see CDO/MongoDB Store.
- db4o: Store that uses DB4O, see CDO/DB4O Store.
Property connectionKeepAlivePeriod
Specifies, if the store is a DBStore, at what interval the store will issue an SQL statement to keep the connection to the database alive.
Property readerPoolCapacity
Specifies, if the store is a DBStore, the maximum number of store accessors (JDBC connections) to keep in the reader pool. The default value is 15.
Property writerPoolCapacity
Specifies, if the store is a DBStore, the maximum number of store accessors (JDBC connections) to keep in the writer pool. The default value is 15.
Element mappingStrategy
This element is recognized by DB stores and defines the overall mapping strategy of the built-in O/R mapper.
The type
attribute corresponds to the type of a mapping strategy factory that is contributed via the org.eclipse.emf.cdo.server.db.mappingStrategies
extension point. The following values are possible with the shipped distribution (subject to user supplied extension):
- horizontal: Mapping strategy that creates one DB table per concrete model class. The following nested property elements are recognized:
- vertical: Mapping strategy that creates one DB table per class in the model hierarchy. This type is currently not supported. The following nested property elements will be recognized:
Property toManyReferences
Specifies how the built-in O/R mapper will handle to-many references (collections). The following values are recognized:
- ONE_TABLE_PER_REFERENCE: Each to-many reference of the model will get its own DB table.
- ONE_TABLE_PER_CLASS: All to-many references of a model class will share a single DB table.
- ONE_TABLE_PER_PACKAGE: All to-many references of a model package will share a single DB table.
- ONE_TABLE_PER_REPOSITORY: All to-many references of all model classes i the repository will share a single DB table.
- LIKE_ATTRIBUTES: Collections will be serialized to a BLOB column in the same DB table that the attributes of the containing model class are stored in. This option is currently not supported.
Property toOneReferences
Specifies how the built-in O/R mapper will handle to-one references. The following values are recognized:
- LIKE_ATTRIBUTES: Single references will be stored in a CDOID column in the same DB table that the attributes of the containing model class are stored in. This option is the default option.
- LIKE_TO_MANY_REFERENCES: Single references will be handled in the same way as specified for to-many references. This option is currently not supported.
Property maxTableNameLength
Enables you to override the default value of the chosen DB adapter for the maximum length of table names.
Property maxFieldNameLength
Enables you to override the default value of the chosen DB adapter for the maximum length of column names.
Property tableNamePrefix
Specifies a common fixed prefix for all table names generated by this mapping strategy.
Property qualifiedNames
Specifies whether generated package or class table names are qualified or not.
Property forceNamesWithID
Specifies whether generated names are always suffixed with an internal ID or only in cases where the generated name absolutely needs mangling.
Property fieldConstructionTracking
Specifies whether you want db field construction stacktrace on schema update to have the origin of the nullable index field.
Property objectTypeCacheSize (since cdo.server.db 4.0)
Specifies the size of the object type in-memory cache. Possible configuration values are:
- 0 (zero). Don't use memory caching.
- >0. Use memory caching with the cache size given.
The default is a memory cache size of 10,000,000.
Property columnTypeModifier (since cdo.server.db 4.2)
Specifies the name of a column type modifier.
Property forceIndexes (since cdo.server.db 4.4)
Specifies on what types of structural features additional indexes are to be created. The value is either empty or a | separated list of the following tokens:
- NONE (default)
- ALL (equal to ATTRIBUTE|REFERENCE)
- ATTRIBUTE
- REFERENCE (equal to CONTAINER|CONTAINMENT|XREF)
- CONTAINER
- CONTAINMENT
- XREF
Element dbAdapter
Defines the IDBAdapter
instance of the store. Please refer to Net4j DB Framework for details about DB adapters and SQL dialects.
The type
attribute corresponds to the name of a DB adapter factory that is contributed via the org.eclipse.net4j.db.dbAdapters
extension point. No additional attributes are recognized.
The DB adapter must match the database specified in the dataSource element.
Element dataSource
Defines the DataSource
instance of the store.
The class
attribute corresponds to the fully qualified name of the data source class. Please refer to your DB manual for details about the supported data sources and their attributes.
Wikis: CDO Server | CDO | Net4j | EMF | Eclipse