
org.eclipse.persistence.config.PersistenceUnitProperties Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 1998, 2012 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
* dclarke - Bug 294985: update of comments and addition of connection logging property
* cdelahun - Bug 214534: added COORDINATION_JMS_REUSE_PUBLISHER property to enable JMS rcm legacy behavior
* 04/01/2011-2.3 Guy Pelletier
* - 337323: Multi-tenant with shared schema support (part 2)
* 06/30/2011-2.3.1 Guy Pelletier
* - 341940: Add disable/enable allowing native queries
* 09/20/2011-2.3.1 Guy Pelletier
* - 357476: Change caching default to ISOLATED for multitenant's using a shared EMF.
******************************************************************************/
package org.eclipse.persistence.config;
import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.FlushModeType;
import javax.persistence.Persistence;
import org.eclipse.persistence.annotations.Cache;
import org.eclipse.persistence.config.ReferenceMode;
import org.eclipse.persistence.exceptions.ExceptionHandler;
import org.eclipse.persistence.logging.SessionLog;
import org.eclipse.persistence.platform.database.DatabasePlatform;
import org.eclipse.persistence.platform.server.ServerPlatform;
import org.eclipse.persistence.sessions.DatabaseLogin;
import org.eclipse.persistence.sessions.SessionEventListener;
import org.eclipse.persistence.sessions.SessionProfiler;
import org.eclipse.persistence.sessions.coordination.RemoteCommandManager;
import org.eclipse.persistence.sessions.factories.SessionManager;
import org.eclipse.persistence.tools.profiler.PerformanceProfiler;
import org.eclipse.persistence.tools.profiler.QueryMonitor;
import org.eclipse.persistence.tools.profiler.PerformanceMonitor;
/**
* The class defines EclipseLink persistence unit property names. These values
* are used to assist in the configuration of properties passed to
* {@link Persistence#createEntityManagerFactory(String, Map)} which override
* the values specified in the persistence.xml file.
*
* Usage Example:
* Map props = new HashMap();
*
* props.put(PersistenceUnitProperties.JDBC_USER, "user-name");
* props.put(PersistenceUnitProperties.JDBC_PASSWORD, "password");
*
* EntityManagerFactory emf = Persistence.createEntityManagerFactory("pu-name", props);
*
*
* Property values are usually case-insensitive with some common sense
* exceptions, for instance class names.
*
* @see Persistence#createEntityManagerFactory(String, Map)
*/
public class PersistenceUnitProperties {
/**
* The javax.persistence.transactionType"
property specifies the
* transaction type for the persistence unit. This property overrides the
* value specified in the persistence.xml.
*
* Values: A string value of "JTA" or "RESOURCE_LOCAL"
*/
public static final String TRANSACTION_TYPE = "javax.persistence.transactionType";
/**
* The javax.persistence.jtaDataSource"
property specifies the JTA data
* source name that will look up a valid {@link javax.sql.DataSource}. This
* property is used to override the value specified in the persistence.xml.
*
* Values: A well formed JNDI resource name that can locate the data source
* in the target container or an instance of {@link javax.sql.DataSource}
*/
public static final String JTA_DATASOURCE = "javax.persistence.jtaDataSource";
/**
* The javax.persistence.nonJtaDataSource"
property specifies the
* non-JTA data source name that will look up a valid
* {@link javax.sql.DataSource}. This can be used to override the value
* specified in the persistence.xml.
*
* Values: A well formed JNDI resource name that can locate the data source
* in the target container or an instance of {@link javax.sql.DataSource}
*/
public static final String NON_JTA_DATASOURCE = "javax.persistence.nonJtaDataSource";
// JDBC Properties for internal connection pooling
/**
* The javax.persistence.jdbc.driver"
property specifies the JDBC
* DriverManager class name used for internal connection pooling when a data
* source is not being used. The value must be a string which is the
* qualified class name for a valid class that implements
* java.sql.Driver
.
*
* Persistence XML example:
*
*
*
* The previous value for this property "eclipselink.jdbc.driver
is now deprecated and should
* be replaced with this new name.
*/
public static final String JDBC_DRIVER = "javax.persistence.jdbc.driver";
/**
* The javax.persistence.jdbc.url"
property specifies the JDBC URL used
* for internal connection pooling when a data source is not being used. The
* value must be a string which represents a valid URL for the specified
* JDBC driver.
*
* Persistence XML example:
*
*
*
* The previous value for this property "eclipselink.jdbc.url
is now deprecated and should
* be replaced with this new name.
*/
public static final String JDBC_URL = "javax.persistence.jdbc.url";
/**
* The javax.persistence.jdbc.user"
property specifies the data source
* or JDBC user name.
*
* Persistence XML example:
*
*
*
* The previous value for this property "eclipselink.jdbc.user
is now deprecated and should
* be replaced with this new name.
*/
public static final String JDBC_USER = "javax.persistence.jdbc.user";
/**
* The javax.persistence.jdbc.password"
property specifies the data
* source or JDBC password.
*
* Persistence XML example:
*
*
The previous value for this
* property "eclipselink.jdbc.password
is now deprecated and should be replaced with this new
* name.
*/
public static final String JDBC_PASSWORD = "javax.persistence.jdbc.password";
/**
* The "eclipselink.jdbc.native-sql"
property specifies whether
* generic SQL should be used or platform specific 'native' SQL. The
* platform specific SQL customizes join syntax, date operators, sequencing,
* ...
*
* Allowed Values (String):
*
* - "true" - use database specific SQL
*
- "false" (DEFAULT) - use generic SQL
*
*
* @see DatabaseLogin#setUsesNativeSQL(boolean)
*/
public static final String NATIVE_SQL = "eclipselink.jdbc.native-sql";
/**
* The "eclipselink.jdbc.sql-cast"
property specifies is
* platform specific CAST SQL operations should be used. Casting is normally
* not required, and can cause issues when used. Allowed Values (String):
*
* - "true" - enable platform specific cast
*
- "false" (DEFAULT) - disable platform specific cast
*
*
* @see DatabasePlatform#setIsCastRequired(boolean)
*/
public static final String SQL_CAST = "eclipselink.jdbc.sql-cast";
/**
* The "wait"
property.
* This can be append to any connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.default.wait"
* which specifies the timeout time in milliseconds (ms) that will be waited
* for an available connection before an exception is thrown. Ignored in
* case external connection pools are used.
*
* Default: 180000 ms (3 minutes).
*
* The value specified should be a string containing a positive integer
* value. A value of 0 means wait forever.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_WAIT = "wait";
/**
* The "max"
property.
* This can be append to any connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.default.max"
* Specifies the maximum number of read connection in the internal connection pool. If
* the maximum size is reached, threads requiring a connection will wait
* until one is released back to the pool. By default a single shared
* (exclusive) read/write pool is used with min/max 32 connections and 1
* initial. Ignored in case external connection pools are used.
*
* The value specified should be a string containing a positive integer
* value.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_MAX = "max";
/**
* The "min"
property.
* This can be append to any connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.default.min"
* Specifies the minimum number of connections in EclipseLink connection pool.
*
* Ignored in case external connection pools are used. Connections beyond
* the minimum will be disconnected when returned to the pool, so this
* should normally be equal to the number of active threads, or server's
* thread pool size. By default a single shared (exclusive) read/write pool
* is used with min/max 32 connections and 1 initial.
*
* The value specified should be a string containing a positive integer
* value.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_MIN = "min";
/**
* The "initial"
property.
* This can be append to any connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.default.initial"
* EclipseLink JDBC (internal) connection pools properties. Initial number
* of connections in EclipseLink connection pool. This is the number of
* connections connected at startup. By default a single shared (exclusive)
* read/write pool is used with min/max 32 connections and 1 initial. Ignored
* in case external connection pools are used.
*
* The value specified should be a string containing a positive integer
* value.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_INITIAL = "initial";
/**
* The "shared"
property.
* This can be append to the read connection pool,
* i.e. "eclipselink.jdbc.connection_pool.read.shared"
* Configures whether connections in EclipseLink read connection pool should
* be shared (not exclusive). Connection sharing means the same JDBC
* connection will be used concurrently for multiple reading threads.
*
* This property is ignored in case external connection pools are used.
*
* Values (case insensitive):
*
* - "false" (DEFAULT): indicates read connections will not be shared
*
- "true": indicates read connections can be shared
*
* @see #CONNECTION_POOL_READ
*/
public static final String CONNECTION_POOL_SHARED = "shared";
/**
* The "url"
property.
* This can be append to a connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.node1.url"
* Configures the JDBC url to use for the connection pool.
* Only required if different than the default.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_URL = "url";
/**
* The "jtaDataSource"
property.
* This can be append to a connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.node1.jtaDataSource"
* Configures the JTA DataSource name to use for the connection pool.
* Only required if different than the default.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_JTA_DATA_SOURCE = "jtaDataSource";
/**
* The "nonJtaDataSource"
property.
* This can be append to a connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.node1.nonJtaDataSource"
* Configures the non JTA DataSource name to use for the connection pool.
* Only required if different than the default.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_NON_JTA_DATA_SOURCE = "nonJtaDataSource";
/**
* The "user"
property.
* This can be append to a connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.node1.user"
* Configures the user name to use for the connection pool.
* Only required if different than the default.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_USER = "user";
/**
* The "password"
property.
* This can be append to a connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.node1.password"
* Configures the password to use for the connection pool.
* Only required if different than the default.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_PASSWORD = "password";
/**
* The "failover"
property.
* This can be append to a connection pool property,
* i.e. "eclipselink.jdbc.connection_pool.node1.failover"
* Configures the connection pool(s) to fail-over to if this connection pool fails.
* A comma separate list is allowed if multiple failover pools are required.
* @see #CONNECTION_POOL
*/
public static final String CONNECTION_POOL_FAILOVER = "failover";
/**
* Allow configuring a "eclipselink.connection-pool."
properties.
* The name of the connection pool must be appended to configure the pool,
* if no name is appended the default (write) pool is configured.
* The name of the property to configure must also be appended.
*
* A user defined connection pool can be configured or one of the following system pools:
*
* - "read" - pool used for non-transactional read queries, (defaults to default pool if not specified).
*
- "default", "write", "" - default pool used for writing and reads if no read pool configured.
*
- "sequence" - pool used for sequencing, (default pool/write connection used if not specified).
*
* A user defined pool is only used if specified in the EntityManager properties or ClientSession ConnectionPolicy,
* or if partitioning is used. *
*
* The following connection pool properties can be configured:
*
* - "initial" - number of initial connections.
*
- "min" - minimum number of connections.
*
- "max" - maximum number of connections.
*
- "wait" - amount of time to wait for a connection from the pool.
*
- "url" - JDBC URL for the connection.
*
- "shared" - only for the read connection pool, shares read connections across threads.
*
- "jtaDataSource" - JTA DataSource name to use for the connection, if different than the default.
*
- "nonJtaDataSource" - non JTA DataSource name to use for the connection, if different than the default.
*
- "user" - user to use for the connection, if different than the default.
*
- "password" - password to use for the connection, if different than the default.
*
*
* Example:
*
* <property name="eclipselink.connection-pool.node2.min" value="16"/>
* <property name="eclipselink.connection-pool.node2.max" value="16"/>
* <property name="eclipselink.connection-pool.node2.url" value="jdbc:oracle:thin:@node2:1521:orcl"/>
*
* @see CONNECTION_POOL_READ
* @see CONNECTION_POOL_SEQUENCE
* @see #CONNECTION_POOL_INITIAL
* @see #CONNECTION_POOL_MIN
* @see #CONNECTION_POOL_MAX
* @see #CONNECTION_POOL_WAIT
* @see #CONNECTION_POOL_USER
* @see #CONNECTION_POOL_PASSWORD
* @see #CONNECTION_POOL_URL
* @see #CONNECTION_POOL_JTA_DATA_SOURCE
* @see #CONNECTION_POOL_NON_JTA_DATA_SOURCE
* @see #CONNECTION_POOL_SHARED
* @see org.eclipse.persistence.sessions.server.ConnectionPool
*/
public static final String CONNECTION_POOL = "eclipselink.connection-pool.";
/**
* Allow configuring the "eclipselink.connection-pool.read."
properties.
* The read connection pool is used for non-transaction read queries.
* By default a separate read connection pool is not used,
* and the default pool is used for read queries.
*
* One of the following connection pool properties must be appended.
* @see #CONNECTION_POOL_INITIAL
* @see #CONNECTION_POOL_MIN
* @see #CONNECTION_POOL_MAX
* @see #CONNECTION_POOL_WAIT
* @see #CONNECTION_POOL_USER
* @see #CONNECTION_POOL_PASSWORD
* @see #CONNECTION_POOL_URL
* @see #CONNECTION_POOL_JTA_DATA_SOURCE
* @see #CONNECTION_POOL_NON_JTA_DATA_SOURCE
* @see org.eclipse.persistence.sessions.server.ReadConnectionPool
*/
public static final String CONNECTION_POOL_READ = "eclipselink.connection-pool.read.";
/**
* Allow configuring the "eclipselink.connection-pool.sequence."
properties.
* The sequence connection pool is used to allocate generated Ids.
* This is only required for TABLE sequencing.
* By default a separate sequence connection pool is not used,
* and the default pool is used for sequencing.
*
* One of the following connection pool properties must be appended.
* @see #CONNECTION_POOL_INITIAL
* @see #CONNECTION_POOL_MIN
* @see #CONNECTION_POOL_MAX
* @see #CONNECTION_POOL_WAIT
* @see #CONNECTION_POOL_USER
* @see #CONNECTION_POOL_PASSWORD
* @see #CONNECTION_POOL_URL
* @see #CONNECTION_POOL_JTA_DATA_SOURCE
* @see #CONNECTION_POOL_NON_JTA_DATA_SOURCE
* @see org.eclipse.persistence.sessions.server.ReadConnectionPool
*/
public static final String CONNECTION_POOL_SEQUENCE = "eclipselink.connection-pool.sequence.";
/**
* The "eclipselink.jdbc.connections.wait-timeout"
property
* which specifies the timeout time in milliseconds (ms) that will be waited
* for an available connection before an exception is thrown. Ignored in
* case external connection pools are used.
*
* Default: 180000 ms (3 minutes).
*
* The value specified should be a string containing a positive integer
* value. A value of 0 means wait forever.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_WAIT
* @see #CONNECTION_POOL_WAIT
*/
@Deprecated
public static final String JDBC_CONNECTIONS_WAIT = "eclipselink.jdbc.connections.wait-timeout";
/**
* The "eclipselink.jdbc.connections.max"
property specifies
* the maximum number of read connection in the internal connection pool. If
* the maximum size is reached, threads requiring a connection will wait
* until one is released back to the pool. By default a single shared
* (exclusive) read/write pool is used with min/max 32 connections and 1
* initial. Ignored in case external connection pools are used.
*
* The value specified should be a string containing a positive integer
* value.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_MAX
* @see #CONNECTION_POOL_MAX
*/
@Deprecated
public static final String JDBC_CONNECTIONS_MAX = "eclipselink.jdbc.connections.max";
/**
* The "eclipselink.jdbc.connections.min"
property specifies
* the minimum number of connections in EclipseLink connection pool.
*
* Ignored in case external connection pools are used. Connections beyond
* the minimum will be disconnected when returned to the pool, so this
* should normally be equal to the number of active threads, or server's
* thread pool size. By default a single shared (exclusive) read/write pool
* is used with min/max 32 connections and 1 initial.
*
* The value specified should be a string containing a positive integer
* value.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_MIN
* @see #CONNECTION_POOL_MIN
*/
@Deprecated
public static final String JDBC_CONNECTIONS_MIN = "eclipselink.jdbc.connections.min";
/**
* The "eclipselink.jdbc.connections.initial"
property
* EclipseLink JDBC (internal) connection pools properties. Initial number
* of connections in EclipseLink connection pool. This is the number of
* connections connected at startup. By default a single shared (exclusive)
* read/write pool is used with min/max 32 connections and 1 initial. Ignored
* in case external connection pools are used.
*
* The value specified should be a string containing a positive integer
* value.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_INITIAL
* @see #CONNECTION_POOL_INITIAL
*/
@Deprecated
public static final String JDBC_CONNECTIONS_INITIAL = "eclipselink.jdbc.connections.initial";
/**
* The "eclipselink.jdbc.write-connections.max"
property
* specifies the maximum number of connections supported in the internal
* write connection pool. Maximum number of connections in EclipseLink write
* connection pool. If the maximum size is reached, threads requiring a
* connection will wait until one is released back to the pool. By default a
* single shared (exclusive) read/write pool is used with min/max 32
* connections and 1 initial. Ignored in case external connection pools are
* used.
*
* The value specified should be a string containing a positive integer
* value.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_MAX
* @see #CONNECTION_POOL_MAX
*/
@Deprecated
public static final String JDBC_WRITE_CONNECTIONS_MAX = "eclipselink.jdbc.write-connections.max";
/**
* The "eclipselink.jdbc.write-connections.min"
property
* specifies the minimum number of connections in the internal write
* connection pool. Connections beyond the minimum will be disconnected when
* returned to the pool, so this should normally be equal to the number of
* active threads, or server's thread pool size. By default a single shared
* (exclusive) read/write pool is used with min/max 32 connections and 1
* initial. Ignored in case external connection pools are used.
*
* The value specified should be a string containing a positive integer
* value.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_MIN
* @see #CONNECTION_POOL_MIN
*/
@Deprecated
public static final String JDBC_WRITE_CONNECTIONS_MIN = "eclipselink.jdbc.write-connections.min";
/**
* The "eclipselink.jdbc.write-connections.initial"
property
* configures the number of connections connected at created at startup in
* the write connection pool. By default a single shared (exclusive)
* read/write pool is used with min/max 32 connections and 1 initial.
*
* This property is ignored in case external connection pools are used.
*
* The value must be a string containing a zero or greater integer value.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_INITIAL
* @see #CONNECTION_POOL_INITIAL
*/
@Deprecated
public static final String JDBC_WRITE_CONNECTIONS_INITIAL = "eclipselink.jdbc.write-connections.initial";
/**
* The "eclipselink.jdbc.read-connections.max"
property
* configures the maximum number of connections in the read connection pool.
* If the maximum size is reached, threads requiring a connection will wait
* until one is released back to the pool (unless shared). By default a
* separate read connection pool is not used. By default a single shared
* (exclusive) read/write pool is used with min/max 32 connections and 1
* initial.
*
* This property is ignored in case external connection pools are used.
*
* The value specified should be a string containing a zero or greater
* integer value.
*
* @see #JDBC_CONNECTIONS_WAIT to configure the timeout waiting on a
* connection.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_MAX
* @see #CONNECTION_POOL_MAX
*/
@Deprecated
public static final String JDBC_READ_CONNECTIONS_MAX = "eclipselink.jdbc.read-connections.max";
/**
* The "eclipselink.jdbc.read-connections.min"
property
* configures the minimum number of connections in read connection pool.
* Connections beyond the minimum will be disconnected when returned to the
* pool, so this should normally be equal to the number of active threads,
* or server's thread pool size. By default a separate read connection pool
* is not used. By default a single shared (exclusive) read/write pool is
* used with min/max 32 connections and 1 initial.
*
* This property is ignored in case external connection pools are used.
*
* The value specified should be a string containing a zero or greater
* integer value.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_MIN
* @see #CONNECTION_POOL_MIN
*/
@Deprecated
public static final String JDBC_READ_CONNECTIONS_MIN = "eclipselink.jdbc.read-connections.min";
/**
* The "eclipselink.jdbc.read-connections.initial"
property
* configures the number of connections connected at created at startup in
* the read connection pool. By default a single shared (exclusive)
* read/write pool is used with min/max 32 connections and 1 initial.
*
* This property is ignored in case external connection pools are used.
*
* The value must be a string containing a zero or greater integer value.
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_INITIAL
* @see #CONNECTION_POOL_INITIAL
*/
@Deprecated
public static final String JDBC_READ_CONNECTIONS_INITIAL = "eclipselink.jdbc.read-connections.initial";
/**
* The "eclipselink.jdbc.read-connections.shared"
property
* configures whether connections in EclipseLink read connection pool should
* be shared (not exclusive). Connection sharing means the same JDBC
* connection will be used concurrently for multiple reading threads.
*
* This property is ignored in case external connection pools are used.
*
* Values (case insensitive):
*
* - "false" (DEFAULT): indicates read connections will not be shared
*
- "true": indicates read connections can be shared
*
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_SHARED
* @see #CONNECTION_POOL_SHARED
*/
@Deprecated
public static final String JDBC_READ_CONNECTIONS_SHARED = "eclipselink.jdbc.read-connections.shared";
/**
* The "eclipselink.jdbc.sequence-connection-pool.max"
property
* configures the maximum number of connections in the sequence connection
* pool. If the maximum size is reached, threads requiring a connection will
* wait until one is released back to the pool.
*
* By default a separate sequence connection pool is not used (the sequence
* is allocated on the write connection).
*
* This property is ignored in case external connection pools are used.
*
* The value must be a string containing a zero or greater integer value.
* The default value is two (2).
*
* @see #JDBC_SEQUENCE_CONNECTION_POOL Required to configure the use of a
* sequence pool/data-source
* @see #JDBC_CONNECTIONS_WAIT to configure the timeout
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_MAX
* @see #CONNECTION_POOL_MAX
*/
@Deprecated
public static final String JDBC_SEQUENCE_CONNECTION_POOL_MAX = "eclipselink.jdbc.sequence-connection-pool.max";
/**
* The "eclipselink.jdbc.sequence-connection-pool.min"
property
* configures the minimum number of connections in sequence connection pool.
* Connections beyond the minimum will be disconnected when returned to the
* pool, so this should normally be equal to the maximum to avoid
* connecting/disconnecting.
*
* By default a separate sequence connection pool is not used (the sequence
* is allocated on the write connection).
*
* This property is ignored in case external connection pools are used.
*
* The value must be a string containing a zero or greater integer value.
* The default value is two (2).
*
* @see #JDBC_SEQUENCE_CONNECTION_POOL Required to configure the use of a
* sequence pool/data-source
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_MIN
* @see #CONNECTION_POOL_MIN
*/
@Deprecated
public static final String JDBC_SEQUENCE_CONNECTION_POOL_MIN = "eclipselink.jdbc.sequence-connection-pool.min";
/**
* The "eclipselink.jdbc.sequence-connection-pool.initial
property configures the initial number of connections in
* sequence connection pool. This is the number of connections connected at
* startup.
*
* By default a separate sequence connection pool is not used (the sequence
* is allocated on the write connection).
*
* This property is ignored in case external connection pools are used.
*
* The value must be a string containing a zero or greater integer value.
* The default value is two (2).
*
* @see #JDBC_SEQUENCE_CONNECTION_POOL Required to configure the use of a
* sequence pool/data-source
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_INITIAL
* @see #CONNECTION_POOL_INITIAL
*/
@Deprecated
public static final String JDBC_SEQUENCE_CONNECTION_POOL_INITIAL = "eclipselink.jdbc.sequence-connection-pool.initial";
/**
* The "eclipselink.jdbc.sequence-connection-pool"
property
* configures a separate connection pool should used for sequencing to
* retrieve new value(s). This improves sequence allocation by allocating
* sequencing outside the current transaction. This can be used with
* internal or external (DataSource) connection pooling, external must
* provide a non-jta-datasource resource name using
* {@link #JDBC_SEQUENCE_CONNECTION_POOL_DATASOURCE}. A sequence connection
* pool is generally only used with using TABLE sequencing to minimize
* contention on the sequence table(s).
*
* Values (case-insensitive):
*
* - "false" (DEFAULT):
*
- "true":
*
*
* @see #JDBC_SEQUENCE_CONNECTION_POOL_DATASOURCE to configure the use of a
* non-JTA data source for sequence allocation call.
* @see #JDBC_SEQUENCE_CONNECTION_POOL_INITIAL to configure the initial
* connections size for internal connection pooling
* @see #JDBC_SEQUENCE_CONNECTION_POOL_MIN to configure the minimum
* connections size for internal connection pooling
* @see #JDBC_SEQUENCE_CONNECTION_POOL_MAX to configure the maximum
* connections size for internal connection pooling
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_SEQUENCE
* @see #CONNECTION_POOL_SEQUENCE
*/
@Deprecated
public static final String JDBC_SEQUENCE_CONNECTION_POOL = "eclipselink.jdbc.sequence-connection-pool";
/**
* The "eclipselink.jdbc.sequence-connection-pool.non-jta-data-source
property configures the name of the non-JTA data source that
* will be used for sequencing calls.
*
* @see #JDBC_SEQUENCE_CONNECTION_POOL
* @deprecated as of EclipseLink 2.2 replaced by CONNECTION_POOL_NON_JTA_DATA_SOURCE
* @see #CONNECTION_POOL_NON_JTA_DATA_SOURCE
*/
@Deprecated
public static final String JDBC_SEQUENCE_CONNECTION_POOL_DATASOURCE = "eclipselink.jdbc.sequence-connection-pool.non-jta-data-source";
/**
* "eclipselink.partitioning"
* Used to set the default PartitioningPolicy for a persistence unit.
* A PartitioningPolicy is used to partition the data for a class across multiple difference databases
* or across a database cluster such as Oracle RAC.
* Partitioning can provide improved scalability by allowing multiple database machines to service requests.
*
* If multiple partitions are used to process a single transaction, JTA should be used for proper XA transaction support.
*
* The value must be set to the name of an existing defined PartitioningPolicy.
*
* @see org.eclipse.persistence.annotations.Partitioning
* @see org.eclipse.persistence.descriptors.partitioning.PartitioningPolicy
*/
public static final String PARTITIONING = "eclipselink.partitioning";
/**
* "eclipselink.partitioning.callback"
*
Used to integrate with an external DataSource's data affinity support, such as UCP.
*
* The value must be set to the full class name of the implementor of the DataPartitioningCallback interface.
*
i.e. "org.eclipse.persistence.platform.database.oracle.ucp.UCPDataPartitioningCallback".
*
* @see org.eclipse.persistence.platform.database.partitioning.DataPartitioningCallback
* @see org.eclipse.persistence.annotations.Partitioning
* @see org.eclipse.persistence.descriptors.partitioning.PartitioningPolicy
*/
public static final String PARTITIONING_CALLBACK = "eclipselink.partitioning.callback";
/**
* Property "eclipselink.jdbc.bind-parameters
configures whether parameter binding will be used in the
* creation of JDBC prepared statements. Usage of parameter binding is
* generally a performance optimization allowing for SQL and prepared
* statement caching as well as usage of batch writing.
*
* Values:
*
* - "true" (DEFAULT): binding will be used
*
- "false": values will be written literally into the generated SQL
*
*/
public static final String JDBC_BIND_PARAMETERS = "eclipselink.jdbc.bind-parameters";
/**
* The "eclipselink.jdbc.exclusive-connection.mode"
property
* specifies when reads are performed through the write connection. You can
* set this property while creating either an EntityManagerFactory (either
* in the map passed to the createEntityManagerFactory method, or in the
* persistence.xml file), or an EntityManager (in the map passed to the
* createEntityManager method). Note that the latter overrides the former.
*
* Values:
*
* - "Transactional" (DEFAULT):
* {@link ExclusiveConnectionMode#Transactional}
*
- "Isolated" - {@link ExclusiveConnectionMode#Isolated}
*
- "Always" - {@link ExclusiveConnectionMode#Always}
*
*
* @see ExclusiveConnectionMode
*/
public static final String EXCLUSIVE_CONNECTION_MODE = "eclipselink.jdbc.exclusive-connection.mode";
/**
* The "eclipselink.jdbc.exclusive-connection.is-lazy"
property
* specifies when write connection is acquired lazily.
*
* Values:
*
* - "false"
*
- "true" (DEFAULT)
*
*/
public static final String EXCLUSIVE_CONNECTION_IS_LAZY = "eclipselink.jdbc.exclusive-connection.is-lazy";
/**
* The "eclipselink.jdbc.cache-statements.size"
property
* specifies the number of statements held when using internal statement
* caching. The value must be a string value containing a positive integer
* or zero.
*
* Default: "50".
*/
public static final String CACHE_STATEMENTS_SIZE = "eclipselink.jdbc.cache-statements.size";
/**
* The "eclipselink.jdbc.cache-statements"
property specifies
* whether JDBC statements should be cached. This is recommended when using
* EclipseLink's internal connection pooling.
*
* Valid values:
*
* - true - enable internal statement caching.
*
- false - disable internal statement caching. (DEFAULT)
*
*
* Example: persistence.xml file
*
*
Example: property Map
* propertiesMap.put(PersistenceUnitProperties.CACHE_STATEMENTS, "false");
*
*/
public static final String CACHE_STATEMENTS = "eclipselink.jdbc.cache-statements";
// Bean Validation properties
/**
* The "javax.persistence.validation.factory"
property
* specifies an instance of javax.validation.ValidatorFactory used by
* EclipseLink to perform Automatic Validation upon Lifecycle Events. If the
* propoerty is not specified, and if Bean Validation API is visible to
* Eclipselink, it will try to instantiate an insance of
* javax.validation.ValidationFactory
by calling
* Validation.buildDefaultValidatorFactory()
*/
public static final String VALIDATOR_FACTORY = "javax.persistence.validation.factory";
/**
* The "javax.persistence.validation.mode"
property specifies
* whether the automatic lifecycle event validation is in effect.
*
* Valid values for this property are "AUTO", "CALLBACK" or "NONE".
*/
public static final String VALIDATION_MODE = "javax.persistence.validation.mode";
/**
* The "javax.persistence.validation.group.pre-persist"
* property specifies the name of the validator groups to execute for
* preUpdate event. The value should be a string with fully qualified
* classnames separated by a comma (','). If this value is not specified in
* both persistence.xml or using this property, the default Bean Validation
* group (the group Default) will be validated
*/
public static final String VALIDATION_GROUP_PRE_PERSIST = "javax.persistence.validation.group.pre-persist";
/**
* The "javax.persistence.validation.group.pre-update"
property
* specifies the name of the validator groups to execute for preUpdate
* event. The value should be a string with fully qualified classnames
* separated by a comma (','). If this value is not specified in both
* persistence.xml or using this property, the default Bean Validation group
* (the group Default) will be validated
*/
public static final String VALIDATION_GROUP_PRE_UPDATE = "javax.persistence.validation.group.pre-update";
/**
* The "javax.persistence.validation.group.pre-remove"
property
* specifies the name of the validator groups to execute for preRemove
* event. The value should be a string with fully qualified classnames
* separated by a comma (','). If this value is not specified in both
* persistence.xml or using this property, no validation will occur on
* remove.
*/
public static final String VALIDATION_GROUP_PRE_REMOVE = "javax.persistence.validation.group.pre-remove";
// Caching Properties
/**
* Default Suffix could be appended to some prefixes to form a property name
* setting the default for the persistence unit.
*
* @see #CACHE_SIZE_
* @see #CACHE_TYPE_
* @see #CACHE_SHARED_
*/
public static final String DEFAULT = "default";
/**
* Property prefix "eclipselink.cache.size.
used to specify the cache size for a specific
* entity type. The prefix must be followed by a valid entity type name.
*
* Property names formed out of these prefixes by appending either entity
* name, or class name (indicating that the property values applies only to
* a particular entity) or DEFAULT suffix (indicating that the property
* value applies to all entities). For most cache types, the size is only
* the initial size, not a fixed or maximum size. For CacheType.SoftCache
* and CacheType.HardCache the size is the sub-cache size. The default cache
* size is 100.
*
* @see #CACHE_SIZE_DEFAULT
*/
public static final String CACHE_SIZE_ = "eclipselink.cache.size.";
/**
* All valid values for CACHE_TYPE_ properties are declared in CacheType
* class. The default cache type is SoftWeak. This sets the type of cache,
* if you do not wish to cache entities at all, then set CACHE_SHARED_.
*
* @see #CACHE_SHARED_
* @see CacheType
* @see #CACHE_TYPE_DEFAULT
*/
public static final String CACHE_TYPE_ = "eclipselink.cache.type.";
/**
* Indicates whether entity's cache should be shared (non-isolated). Valid
* values are case-insensitive "false" and "true"; "true" is default. If you
* do not wish to cache your entities, set this to "false".
*
* @see #CACHE_SHARED_DEFAULT
*/
public static final String CACHE_SHARED_ = "eclipselink.cache.shared.";
/**
* Default caching properties - apply to all entities. May be overridden by
* individual entity property with the same prefix. For most cache types,
* the size is only the initial size, not a fixed or maximum size. For
* CacheType.SoftCache and CacheType.HardCache the size is the sub-cache
* size. The default cache size is 100.
*/
public static final String CACHE_SIZE_DEFAULT = CACHE_SIZE_ + DEFAULT;
/**
* Default caching properties - apply to all entities. May be overridden by
* individual entity property with the same prefix. The default cache type
* is SoftWeak. This sets the type of cache, if you do not wish to cache
* entities at all, then set CACHE_SHARED_DEFAULT.
*
* @see #CACHE_SHARED_DEFAULT
*/
public static final String CACHE_TYPE_DEFAULT = CACHE_TYPE_ + DEFAULT;
/**
* Default caching properties - apply to all entities. May be overridden by
* individual entity property with the same prefix. If you do not wish to
* cache your entities, set this to "false".
*/
public static final String CACHE_SHARED_DEFAULT = CACHE_SHARED_ + DEFAULT;
// Customizations properties
/**
* The type of logger. By default DefaultSessionLog is used. Valid values
* are the logger class name which implements
* org.eclipse.persistence.logging.SessionLog or one of values defined in
* LoggerType.
*
* @see LoggerType
*/
public static final String LOGGING_LOGGER = "eclipselink.logging.logger";
/**
* Property "eclipselink.logging.level
allows the default logging levels to be specified.
*
* Java example:
* props.put(PersistenceUnitProperties.LOGGING_LEVEL, SessionLog.FINE_LABEL);
*
* XML example:
*
* ;
*
*
* Logging Levels:
*
* @see SessionLog#OFF_LABEL = "OFF"
* @see SessionLog#SEVERE_LABEL = "SEVERE"
* @see SessionLog#WARNING_LABEL = "WARNING"
* @see SessionLog#CONFIG_LABEL = "CONFIG"
* @see SessionLog#INFO_LABEL = "INFO" (DEFAULT)
* @see SessionLog#FINE_LABEL = "FINE"
* @see SessionLog#FINER_LABEL = "FINER"
* @see SessionLog#FINEST_LABEL = "FINEST"
* @see SessionLog#ALL_LABEL = "ALL"
*
* @see #CATEGORY_LOGGING_LEVEL_ for category specific level configuration
*/
public static final String LOGGING_LEVEL = "eclipselink.logging.level";
/**
* Property prefix "eclipselink.logging.level.
allows the category specific logging levels to be
* specified.
*
* Java example:
* props.put(PersistenceUnitProperties.CATEGORY_LOGGING_LEVEL_ + SessionLog.EJB_OR_METADATA, SessionLog.WARNING_LABEL);
*
* XML example:
*
* ;
*
specific Valid values are names of levels defined in
* java.util.logging.Level, default value is INFO.
*
* Categories:
*
* @see SessionLog#SQL
* @see SessionLog#TRANSACTION
* @see SessionLog#EVENT
* @see SessionLog#CONNECTION
* @see SessionLog#QUERY
* @see SessionLog#CACHE
* @see SessionLog#PROPAGATION
* @see SessionLog#SEQUENCING
* @see SessionLog#EJB_OR_METADATA
* @see SessionLog#METAMODEL
* @see SessionLog#WEAVER
* @see SessionLog#PROPERTIES
* @see SessionLog#SERVER
*/
public static final String CATEGORY_LOGGING_LEVEL_ = LOGGING_LEVEL + ".";
/**
* By default sql bind paramters are displayed in exceptions and logs
* when the log level is FINE or greater. To override this behavior you
* may set this property to specify that the data should or should not be
* visible. Note: this property applies only to bind parameters. When not
* using binding, the parameters are always displayed.
*
* @see JDBC_BIND_PARAMETERS
*/
public static final String LOGGING_PARAMETERS = "eclipselink.logging.parameters";
/**
* The "eclipselink.logging.timestamp"
property configures if
* the current timestamp should be included in each log message.
*
* Values:
*
* - "true" (Default)
*
- "false"
*
*/
public static final String LOGGING_TIMESTAMP = "eclipselink.logging.timestamp";
/**
* The "eclipselink.tenant-id"
property specifies the
* default context property used to populate multitenant entities.
*
* NOTE: This is merely a default multitenant property than can be used on
* its own or with other properties defined by the user. Users are not
* obligated to use this property and are free to specify their own.
*
* @see org.eclipse.persistence.annotations.Multitenant
* @see org.eclipse.persistence.annotations.TenantDiscriminatorColumn
*
* Example: persistence.xml file
*
*
Example: property Map
* propertiesMap.put(PersistenceUnitProperties.MULTITENANT_PROPERTY_DEFAULT, "Oracle");
*
*/
public static final String MULTITENANT_PROPERTY_DEFAULT = "eclipselink.tenant-id";
/**
* Property "eclipselink.multitenant.tenants-share-cache
* specifies that multitenant entities will share the L2 cache. By default
* this property is false meaning multitenant entities will have an ISOLATED
* setting. When setting it to true a PROTECTED cache setting will be used.
*
* WARNING: Queries that use the cache may return data from other tenants
* when using the PROTECTED setting.
*
* @see eclipselink.multitenant.tenants-share-emf
*
*
* Java example:
* props.put(PersistenceUnitProperties.MULTITENANT_SHARED_CACHE, true);
*
* XML example:
*
* ;
*
*/
public static final String MULTITENANT_SHARED_CACHE = "eclipselink.multitenant.tenants-share-cache";
/**
* Property "eclipselink.multitenant.shared-emf
is used to
* indicate that multitenant entities will be used within a shared entity
* manager factory. This property defaults to true (and applies to
* multitenant entities only). When setting it to false, users are required
* to provide a unique session name.
*
* @see eclipselink.session-name
* @see eclipselink.multitenant.tenants-share-cache
*
*
* Java example:
* props.put(PersistenceUnitProperties.MULTITENANT_SHARED_EMF, true);
*
* XML example:
*
* ;
*
*/
public static final String MULTITENANT_SHARED_EMF = "eclipselink.multitenant.tenants-share-emf";
/**
* Property "eclipselink.logging.thread"
indicating if current
* thread should have its identity included in each log message.
*
* By default ("true") the thread is logged at FINE or less level. This can
* be turned off ("false") or on ("true"). Values:
*
* - "true" (Default)
*
- "false"
*
*/
public static final String LOGGING_THREAD = "eclipselink.logging.thread";
/**
* Property "eclipselink.logging.session"
indicating if the
* session in use should have its identity included in each log message.
*
* Values:
*
* - "true" (Default)
*
- "false"
*
*/
public static final String LOGGING_SESSION = "eclipselink.logging.session";
/**
* Property: "eclipselink.logging.connection"
*
* Values:
*
* - "true" (Default)
*
- "false"
*
*/
public static final String LOGGING_CONNECTION = "eclipselink.logging.connection";
/**
* Values:
*
* - "true" (Default)
*
- "false"
*
*/
public static final String LOGGING_EXCEPTIONS = "eclipselink.logging.exceptions";
/**
* The "eclipselink.logging.file"
property configures a file
* location where the log will be output to instead of standard out.
*/
public static final String LOGGING_FILE = "eclipselink.logging.file";
// Platforms & Customization
/**
* The "eclipselink.ddl.table-creation-suffix"
property is used in
* conjunction with DDL generation options to append a string to the end of
* generated CREATE Table statements
*
* This value is applied to all Table creation statements through the DDL generation feature
* ie
*/
public static final String TABLE_CREATION_SUFFIX = "eclipselink.ddl-generation.table-creation-suffix";
/**
* The "eclipselink.target-database"
property configures the
* database that will be used controlling custom operations and SQL
* generation for the specified database.
*
* Values: Either a short string values as defined in {@link TargetDatabase}
* or a fully qualified class name for a class that extends
* {@link DatabasePlatform}. The default value is TargetDatabase.Auto which
* means EclipseLink will try to automatically determine the correct
* database platform type.
*
* Note: "eclipselink.target-database"
must be specified with a
* non-"Auto" class name or short name when "eclipselink.validation-only"
* is set to "True"
.
*
* @see TargetDatabase
* @see DatabasePlatform
*/
public static final String TARGET_DATABASE = "eclipselink.target-database";
/**
* The "eclipselink.exclude-eclipselink-orm"
property
* configures the exclusion of an EclipseLink ORM mapping file for a
* specific persistence unit. By default the first file found at the
* resource name: "META-INF/eclipselink-orm.xml" is processed and overrides
* configurations specified in annotations, and standard mapping files.
*/
public static final String EXCLUDE_ECLIPSELINK_ORM_FILE = "eclipselink.exclude-eclipselink-orm";
/**
* The "eclipselink.session-name"
property configures a
* specific name to use when storing the singleton server session within the
* {@link SessionManager}.
*
* By default a unique session name is generated by EclipseLink, but the
* user can provide a customary session name - and make sure it's unique. If
* a sessions-xml file is used this must be the name of the session in the
* sessions-xml file.
*/
public static final String SESSION_NAME = "eclipselink.session-name";
// Weaving Properties
/**
* The "eclipselink.weaving"
property configures whether
* weaving should be performed. Weaving is requires for lazy OneToOne,
* ManyToOne, Basic, attribute change tracking, fetch groups, and other
* optimizations.
*
* Values (case insensitive):
*
* - Not Set - defaults to "true" in Java SE using javaagent and within
* EJB 3+ compliant containers
*
- "true" - requires that weaving be done. Will throw an exception if
* entities are not woven
*
- "false" - forces weaving not to be done
*
- "static" - requires that the static weaving utility was used to weave
* the entities
*
* Note: Any value specified that is not in the above list is treated as
* "static".
*/
public static final String WEAVING = "eclipselink.weaving";
/**
* The "eclipselink.weaving.internal"
property indicates
* whether internal optimizations should be enabled through weaving.
*
* Internal optimizations include caching of primary key and session,
* addition of a serialVersionUID if none exists, optimization of EclipseLink's
* cloning strategy and optimization of the way EclipseLink gets and sets values from
* fields mapped as Basic.
*
* This property will only be considered if weaving is enabled.
*
* Values (case insensitive):
*
* - "true" (DEFAULT)
*
- "false"
*
*
* @see #WEAVING
*/
public static final String WEAVING_INTERNAL = "eclipselink.weaving.internal";
/**
* The "eclipselink.weaving.lazy"
property configures whether
* LAZY OneToOne and ManyToOne mappings should be enabled through weaving.
*
* This property will only be considered if weaving is enabled.
*
* Values (case insensitive):
*
* - "true" (DEFAULT)
*
- "false"
*
*
* @see #WEAVING
*/
public static final String WEAVING_LAZY = "eclipselink.weaving.lazy";
/**
* The "eclipselink.weaving.eager"
property configures whether
* EAGER mapping's attributes should be woven to use indirection.
*
* This property will only be considered if weaving is enabled.
*
* Values (case insensitive):
*
* - "true"
*
- "false" (DEFAULT)
*
*
* @see #WEAVING
*/
public static final String WEAVING_EAGER = "eclipselink.weaving.eager";
/**
* The "eclipselink.weaving.changetracking"
property configures
* whether AttributeLevelChangeTracking should be enabled through weaving.
* When this is enabled, only classes with all mappings allowing change
* tracking will have change tracking enabled. Mutable basic attributes will
* prevent this.
*
* This property will only be considered if weaving is enabled.
*
* Values (case insensitive):
*
* - "true" (DEFAULT)
*
- "false"
*
*
* @see #WEAVING
*/
public static final String WEAVING_CHANGE_TRACKING = "eclipselink.weaving.changetracking";
/**
* The "eclipselink.weaving.fetchgroups"
property configures
* whether FetchGroup support should be enabled through weaving. When this
* is enabled, lazy direct mappings will be supported as well as descriptor
* and query level FetchGroups. FetchGroups allow partial objects to be read
* and written, access to un-fetched attributes will cause the object to be
* refreshed/fully-fetched.
*
* This property will only be considered if weaving is enabled.
*
* Values (case insensitive):
*
* - "true" (DEFAULT)
*
- "false"
*
*
* @see #WEAVING
* @see org.eclipse.persistence.descriptors.FetchGroupManager
* @see org.eclipse.persistence.queries.FetchGroup
*/
public static final String WEAVING_FETCHGROUPS = "eclipselink.weaving.fetchgroups";
/**
* The "eclipselink.target-server"
property configures the
* {@link ServerPlatform} that will be used to enable integration with a
* host container.
*
* Valid values are defined in TargetServer class - they correspond to
* server platforms currently supported. Also a custom server platform may
* be specified by supplying a full class name. Specifying a name of the
* class implementing ExternalTransactionController sets
* CustomServerPlatform with this controller. Default is TargetServer.None.
*
* @see TargetServer
*/
public static final String TARGET_SERVER = "eclipselink.target-server";
/**
* The "eclipselink.session.customizer"
property configures a
* {@link SessionCustomizer} used to alter the runtime configuration through
* API.
*
* The value is a full name for a class which implements SessionCustomizer.
* Session customizer called after all other properties have been processed.
*
* @see SessionCustomizer
*/
public static final String SESSION_CUSTOMIZER = "eclipselink.session.customizer";
// Under review public static final String RELATIONSHIPS_FETCH_DEFAULT =
// "eclipselink.relationships-fetch-default";
/**
* The "eclipselink.descriptor.customizer."
is a prefix for a
* property used to configure a {@link DescriptorCustomizer}. Customization
* Prefix Property names formed out of this prefix by appending either
* entity name, or class name (indicating that the property values applies
* only to a particular entity) Allows descriptor customization.
*
* The value is a full name for a class which implements
* DescriptorCustomizer. Only session customizer is called after processing
* these properties.
*
* @see DescriptorCustomizer
*/
public static final String DESCRIPTOR_CUSTOMIZER_ = "eclipselink.descriptor.customizer.";
/**
* The "eclipselink.jdbc.uppercase-columns"
property configures
* native SQL queries are used, the JDBC meta-data may return column names
* in lower case on some platforms. If the column names are upper-case in
* the mappings (default) then they will not match. This setting allows for
* forcing the column names from the meta-data to upper-case.
*/
public static final String NATIVE_QUERY_UPPERCASE_COLUMNS = "eclipselink.jdbc.uppercase-columns";
/**
* The "eclipselink.jpa.uppercase-column-names"
property configures JPA processing
* to uppercase all column name definitions. A value of true also sets the
* "eclipselink.jdbc.uppercase-columns"
property to true, so that JDBC meta-data
* returned from the database is also returned in uppercase, ensuring fields are the same case. This
* gets around situations where user defined fields do not match the case returned by the database for
* native queries, simulating case insensitivity.
*
* Values (case insensitive):
*
* - "true"
*
- "false" (DEFAULT)
*
*/
public static final String UPPERCASE_COLUMN_NAMES = "eclipselink.jpa.uppercase-column-names";
/**
* The "eclipselink.jdbc.batch-writing"
property configures the
* use of batch writing to optimize transactions with multiple writes.
*
* Values (case insensitive):
*
* - "JDBC": use JDBC batch writing.
*
- "Buffered": do not use either JDBC batch writing nor native platform
* batch writing.
*
- "Oracle-JDBC": use Oracle's native batch writing. This requires the
* use of an Oracle JDBC driver.
*
- "None" (DEFAULT): do not use batch writing (turn it off).
*
*
* @see BatchWriting
*/
public static final String BATCH_WRITING = "eclipselink.jdbc.batch-writing";
/**
* The "eclipselink.jdbc.batch-writing.size"
property
* configures the batch size used for batch writing. For parameterized batch
* writing this is the number of statements to batch, default 100. For
* dynamic batch writing, this is the size of the batched SQL buffer,
* default 32k.
*
* @see #BATCH_WRITING
*/
public static final String BATCH_WRITING_SIZE = "eclipselink.jdbc.batch-writing.size";
/**
* The "eclipselink.persistencexml"
property specifies the full
* resource name to look for the persistence XML files in. If not specified
* the default value defined by {@link #ECLIPSELINK_PERSISTENCE_XML_DEFAULT}
* will be used.
*
* IMPORTANT: For now this property is used for the canonical model
* generator but it can later be used as a system property for customizing
* weaving and application bootstrap usage.
*
* This property is only used by EclipseLink when it is locating the
* configuration file. When used within an EJB/Spring container in container
* managed mode the locating and reading of this file is done by the
* container and will not use this configuration.
*/
public static final String ECLIPSELINK_PERSISTENCE_XML = "eclipselink.persistencexml";
/**
* The default resource location used to locate the persistence.xml
* configuration files. Default: "META-INF/persistence.xml"
*/
public static final String ECLIPSELINK_PERSISTENCE_XML_DEFAULT = "META-INF/persistence.xml";
/**
* This "eclipselink.persistenceunits"
property specifies the
* set of persistence unit names that will be processed when generating the
* canonical model. By default all persistence units available in all
* persistence XML files will be used. The value of this property is a comma
* separated list. When specifying multiple persistence units it is not
* possible to have persistence units with a comma in their name.
*
* Note: In the future this property can also be used to limit the
* persistence units that will be processed by the static or dynamic
* weaving.
*/
public static final String ECLIPSELINK_PERSISTENCE_UNITS = "eclipselink.persistenceunits";
/**
* The "eclipselink.exception-handler"
property allows an
* {@link ExceptionHandler} to be specified. An ExceptionHandler handles
* exceptions when they are thrown so that an application might address
* address expected failures and continue.
*
* @see ExceptionHandler
*/
public static final String EXCEPTION_HANDLER_CLASS = "eclipselink.exception-handler";
/**
* The "eclipselink.session.include.descriptor.queries"
* property configures whether to enable the copying of all descriptor named
* queries to the session to be usable from the entity manager.
*
* Default: "true".
*/
public static final String INCLUDE_DESCRIPTOR_QUERIES = "eclipselink.session.include.descriptor.queries";
/**
* The "eclipselink.session-event-listener"
property configures
* a session event listener class.
*
* @see SessionEventListener
* @see #SESSION_CUSTOMIZER as a means to configure multiple listeners using
* API
*/
public static final String SESSION_EVENT_LISTENER_CLASS = "eclipselink.session-event-listener";
/**
* The "eclipselink.sessions-xml"
property configures the use
* of the specified native sessions.xml configuration file. When specified
* this file will load all of the session configuration and mapping
* information from the native XML. No JPA annotations or XML will be used.
*/
public static final String SESSIONS_XML = "eclipselink.sessions-xml";
/**
* The "eclipselink.temporal.mutable"
property configures the
* default for detecting changes to temporal field (Date, Calendar). Default
* "false" (changes to date object itself are not detected). By default it
* is assumed that temporal fields are replaced, and the temporal object not
* changed directly. Enabling mutable temporal fields will cause weaving of
* attribute change tracking to be disabled.
*/
public static final String TEMPORAL_MUTABLE = "eclipselink.temporal.mutable";
/**
* The "eclipselink.jdbc.allow-native-sql-queries"
property
* specifies whether any user defined SQL is allowed within a persistence
* unit. This is of particular importance within a multitenant to minimize
* the potential impact of revealing multi tenant information. By default
* any persistence unit containing at least one multitenant entity will
* cause this flag to be set to 'false'.
*
* Allowed Values (String):
*
* - "true" - (DEFAULT) allow native SQL
*
- "false" - do not allow native SQL.
*
*
* @see Project#setAllowNativeSQLQueries(boolean)
*/
public static final String ALLOW_NATIVE_SQL_QUERIES = "eclipselink.jdbc.allow-native-sql-queries";
/**
* The "eclipselink.allow-zero-id"
property configures if zero
* is considered a valid id on a new entity. If the id is not considered
* valid and sequencing is enabled for the entity a new value will be
* assigned when it is persisted to the database (INSERT)By default an id
* value of 0 is assumed to be null/unassigned. This allows 0 to be a valid
* id value. This can also be set per class using the @PrimaryKey annotation
* and IdValidation.
*
* Caution: This property configures the static singleton on
* {@link Helper#isZeroValidPrimaryKey} which will be shared by all
* concurrent uses of EclipseLink.
*
* @see org.eclipse.persistence.annotations.PrimaryKey
* @see org.eclipse.persistence.annotations.IdValidation
*
* @deprecated replaced by ID_VALIDATION property with value "NULL".
*/
public static final String ALLOW_ZERO_ID = "eclipselink.allow-zero-id";
/**
* The "eclipselink.id-validation"
property defines
* which primary key components values are considered invalid.
* These values will be also overridden by sequencing.
* Note that Identity always overrides any existing id value
* and so does any sequence with shouldAlwaysOverrideExistingValue flag set to true.
*
* @see org.eclipse.persistence.annotations.PrimaryKey
* @see org.eclipse.persistence.annotations.IdValidation
*/
public static final String ID_VALIDATION = "eclipselink.id-validation";
/**
* Defines EntityManager cache behavior after a call to flush method
* followed by a call to clear method. This property could be specified
* while creating either EntityManagerFactory (either in the map passed to
* createEntityManagerFactory method or in persistence.xml) or EntityManager
* (in the map passed to createEntityManager method); the latter overrides
* the former.
*
* @see FlushClearCache
*/
public static final String FLUSH_CLEAR_CACHE = "eclipselink.flush-clear.cache";
/**
* Specify the classloader to use to create an EntityManagerFactory in the
* property map passed to Persistence.createEntityManagerFactory.
*/
public static final String CLASSLOADER = "eclipselink.classloader";
/**
* Configures if the first exception that occurs during deployment should be
* thrown, or if all exceptions should be caught and summary thrown at end
* of deployment attempt. "true" by default.
*/
public static final String THROW_EXCEPTIONS = "eclipselink.orm.throw.exceptions";
/**
* This property set on the session is used to override orm.xml schema
* validation from its default of false.
*/
public static final String ORM_SCHEMA_VALIDATION = "eclipselink.orm.validate.schema";
/**
* The "eclipselink.deploy-on-startup"
property allows deployment
* to be configured to occur on startup (creation of the EntityManagerFactory),
* instead of occurring the first time an EntityManager is created.
* This may increase startup time of a JavaEE server, but will avoid the first request from hanging
* as the persistence unit is deployed.
*
* Values: A boolean value of "True" or (default "False").
*/
public static final String DEPLOY_ON_STARTUP = "eclipselink.deploy-on-startup";
/**
* The "eclipselink.validation-only"
property validates deployment
* which includes initializing descriptors but does not connect (no login to the database).
*
* Values: A boolean value of "True" or (default "False").
*
* Note: "eclipselink.target-database"
must be specified with a
* non-"Auto" class name or short name when "eclipselink.validation-only"
* is set to "True"
.
*
* @see TargetDatabase
*/
// See 324213
public static final String VALIDATION_ONLY_PROPERTY = "eclipselink.validation-only";
/**
* Allows the database schema to be generated on deployment. Valid values,
* CREATE_ONLY, DROP_AND_CREATE, NONE ("create-tables",
* "drop-and-create-tables", "none"). Default is NONE.
*/
public static final String DDL_GENERATION = "eclipselink.ddl-generation";
/**
* The parameter value "create-tables"
*
* For use with the "eclipselink.ddl-generation"
property.
* Specifies that database tables should be created.
*
* @see #DDL_GENERATION
*/
public static final String CREATE_ONLY = "create-tables";
/**
* The parameter value "drop-and-create-tables"
*
* For use with the "eclipselink.ddl-generation"
property.
* Specifies that database tables should be dropped, then created.
*
* @see #DDL_GENERATION
*/
public static final String DROP_AND_CREATE = "drop-and-create-tables";
/**
* The parameter value "none"
*
* For use with the "eclipselink.ddl-generation"
property,
* and is the default parameter value.
* Specifies that database tables should not be created or dropped.
*
* @see #DDL_GENERATION
*/
public static final String NONE = "none";
/**
* The "eclipselink.metadata-source"
property configures the type of
* MetadataSource implementation to use to read Metadata
*
* Values (case insensitive):
*
* - "XML": Use {@link XMLMetadataSource}
*
- Custom MetadataSource - Specify a custom class name which
* implements {@link MetadataSource}
*
*
* @see MetadataSource
*/
public static final String METADATA_SOURCE = "eclipselink.metadata-source";
/**
* The property "eclipselink.metadata-repository.xml.file"
*
* Specifies the name of the metadata repository xml file to read from using classloader to find the resource
*
* This property should be used in conjunction with the
* "eclipselink.metadata-repository"
when an XML repository is being used.
*
* @see #METADATA_SOURCE
*/
public static final String METADATA_SOURCE_XML_FILE = "eclipselink.metadata-source.xml.file";
/**
* The property "eclipselink.metadata-repository.xml.URL"
*
* Specifies the name of the metadata repository xml URL to read from.
*
* This property should be used in conjunction with the
* "eclipselink.metadata-repository"
when an XML repository is being used.
*
* @see #METADATA_SOURCE
*/
public static final String METADATA_SOURCE_XML_URL = "eclipselink.metadata-source.xml.url";
/**
* The property "eclipselink.application-location"
*
* Specifies the file system directory location where
* DDL files are written (output) to.
*
* This property should be used in conjunction with the
* "eclipselink.ddl-generation.output-mode"
property, with
* a setting of "sql-script"
(or "both"
) for
* DDL file(s) to be written.
*
* @see #DEFAULT_APP_LOCATION
* @see #DDL_GENERATION_MODE
* @see #DDL_SQL_SCRIPT_GENERATION
* @see #DDL_BOTH_GENERATION
*/
public static final String APP_LOCATION = "eclipselink.application-location";
/**
* The property "eclipselink.create-ddl-jdbc-file-name"
*
* Specifies the name of the DDL file which is used to create
* database tables.
*
* This property should be used in conjunction with the
* "eclipselink.application-location"
property to specify a
* location on the file system for DDL file(s) to be written.
*
* @see #APP_LOCATION
* @see #DEFAULT_CREATE_JDBC_FILE_NAME
*/
public static final String CREATE_JDBC_DDL_FILE = "eclipselink.create-ddl-jdbc-file-name";
/**
* The property "eclipselink.drop-ddl-jdbc-file-name"
*
* Specifies the name of the DDL file which is used to drop
* database tables.
*
* This property should be used in conjunction with the
* "eclipselink.application-location"
property to specify a
* location on the file system for DDL file(s) to be written.
*
* @see #APP_LOCATION
* @see #DEFAULT_DROP_JDBC_FILE_NAME
*/
public static final String DROP_JDBC_DDL_FILE = "eclipselink.drop-ddl-jdbc-file-name";
/**
* The default location in the file system to output DDL files.
* Defaults to: the working directory.
*
* @see #APP_LOCATION
*/
public static final String DEFAULT_APP_LOCATION = "." + File.separator;
/**
* The default name of the DDL file which is used to create database tables.
* Defaults to: createDDL.jdbc
*
* @see #CREATE_JDBC_DDL_FILE
*/
public static final String DEFAULT_CREATE_JDBC_FILE_NAME = "createDDL.jdbc";
/**
* The default name of the DDL file which is used to drop database tables.
* Defaults to: dropDDL.jdbc
*
* @see #DROP_JDBC_DDL_FILE
*/
public static final String DEFAULT_DROP_JDBC_FILE_NAME = "dropDDL.jdbc";
/**
* The system property INTERACT_WITH_DB
*
* Specified to enable or disable the execution of DDL (configured with
* the eclipselink.ddl-generation property) against a database.
*
* e.g. a command line setting of -DINTERACT_WITH_DB=false
* will not output DDL to the database.
*
* Valid values:
* true
- output DDL to the database
* false
- do not output DDL to the database
*
* @see #DDL_GENERATION
*/
public static final String JAVASE_DB_INTERACTION = "INTERACT_WITH_DB";
/**
* Configures if database schema should be generated on the database, to a
* file, or both. Valid values, DDL_SQL_SCRIPT_GENERATION,
* DDL_DATABASE_GENERATION, DDL_BOTH_GENERATION ("sql-script", "database",
* "both") DDL_GENERATION must also be set, for this to have an effect.
* Default is DDL_DATABASE_GENERATION.
*
* @see #DEFAULT_DDL_GENERATION_MODE
* @see #DDL_DATABASE_GENERATION
* @see #DDL_SQL_SCRIPT_GENERATION
* @see #DDL_BOTH_GENERATION
*/
public static final String DDL_GENERATION_MODE = "eclipselink.ddl-generation.output-mode";
/**
* The parameter value "sql-script"
*
* For use with the "eclipselink.ddl-generation.output-mode"
property.
*
* Specifies that DDL will be written to file(s).
*
* @see #DDL_GENERATION_MODE
* @see #CREATE_JDBC_DDL_FILE
* @see #DROP_JDBC_DDL_FILE
*/
public static final String DDL_SQL_SCRIPT_GENERATION = "sql-script";
/**
* The parameter value "database"
*
* For use with the "eclipselink.ddl-generation.output-mode"
property,
* and is the default parameter value
*
* Specifies that DDL will be written to the database.
*
* @see #DDL_GENERATION_MODE
* @see #CREATE_JDBC_DDL_FILE
* @see #DROP_JDBC_DDL_FILE
*/
public static final String DDL_DATABASE_GENERATION = "database";
/**
* The parameter value "both"
*
* For use with the "eclipselink.ddl-generation.output-mode"
property.
*
* Specifies that DDL will be written to file(s) and the database.
*
* @see #DDL_GENERATION_MODE
* @see #CREATE_JDBC_DDL_FILE
* @see #DROP_JDBC_DDL_FILE
*/
public static final String DDL_BOTH_GENERATION = "both";
/**
* The eclipselink.ddl-generation.output-mode
parameter is configured
* to the default value of database
.
*
* @see #DDL_GENERATION_MODE
* @see #DDL_DATABASE_GENERATION
*/
public static final String DEFAULT_DDL_GENERATION_MODE = DDL_DATABASE_GENERATION;
/**
* The "eclipselink.validate-existence"
property configures if
* the existence of an object should be verified on persist(), otherwise it
* will assume to be new if not in the persistence context. If checked and
* existing and not in the persistence context and error will be thrown.
* "false" by default.
*/
public static final String VALIDATE_EXISTENCE = "eclipselink.validate-existence";
/**
* Configures if updates should be ordered by primary key.
* This can be used to avoid possible database deadlocks from concurrent
* threads updating the same objects in a different order.
* If not set to true, the order of updates is not guaranteed.
* "true" by default.
*/
public static final String ORDER_UPDATES = "eclipselink.order-updates";
/**
* The "eclipselink.profiler"
property configures the type of
* profiler used to capture runtime statistics.
*
* Values (case insensitive):
*
* - "NoProfiler" (DEFAULT)
*
- "PerformanceMonitor": Use {@link PerformanceMonitor}
*
- "PerformanceProfiler": Use {@link PerformanceProfiler}
*
- "QueryMonitor": Use {@link QueryMonitor}
*
- Custom profiler - Specify a custom profiler class name which
* implements {@link SessionProfiler}
*
*
* @see ProfilerType
*/
public static final String PROFILER = "eclipselink.profiler";
/**
* The "eclipselink.transaction.join-existing"
property Set to
* "true" this property forces persistence context to read through
* JTA-managed ("write") connection in case there is an active
* transaction.The property set in persistence.xml or passed to
* createEntityManagerFactory affects all EntityManagers created by the
* factory. Note that if the property set to "true" then objects read during
* transaction won't be placed into the shared cache unless they have been
* updated. Alternatively, to apply the property only to some
* EntityManagers pass it to createEntityManager method.
*
* Values (caseinsensitive):
*
* - "false" (DEFAULT):
*
- "true":
*
*/
public static final String JOIN_EXISTING_TRANSACTION = "eclipselink.transaction.join-existing";
/**
* The "eclipselink.persistence-context.reference-mode"
* property configures whether there should be hard or soft references used
* within the Persistence Context. Default is "HARD". With soft references
* entities no longer referenced by the application may be garbage collected
* freeing resources. Any changes that have not been flushed in these
* entities will be lost. The property set in persistence.xml or passed to
* createEntityManagerFactory affects all EntityManagers created by the
* factory. Alternatively, to apply the property only to some
* SessionManagers pass it to createEntityManager method.
*
* Values:
* - "HARD" (DEFAULT) - {@link ReferenceMode#HARD
*
- "WEAK" - {@link ReferenceMode#WEAK
*
- "FORCE_WEAK" - {@link ReferenceMode#FORCE_WEAK
*
*
* @see ReferenceMode
*/
public static final String PERSISTENCE_CONTEXT_REFERENCE_MODE = "eclipselink.persistence-context.reference-mode";
/**
* The "javax.persistence.lock.timeout"
property configures the
* WAIT timeout used in pessimistic locking, if the database query exceeds
* the timeout the database will terminate the query and return an
* exception.
*
* Valid values are Strings containing integers zero or greater.
*/
public static final String PESSIMISTIC_LOCK_TIMEOUT = QueryHints.PESSIMISTIC_LOCK_TIMEOUT;
/**
* The "javax.persistence.query.timeout"
property configures
* the default query timeout value.
*
* Valid values are strings containing integers zero or greater.
*/
public static final String QUERY_TIMEOUT = "javax.persistence.query.timeout";
/**
* The "eclipselink.persistence-context.close-on-commit"
* property specifies that the EntityManager will be closed or not used
* after commit (not extended). In general this is normally always the case
* for a container managed EntityManager, and common for application
* managed. This can be used to avoid additional performance overhead of
* resuming the persistence context after a commit(). The property set in
* persistence.xml or passed to createEntityManagerFactory affects all
* EntityManagers created by the factory. Alternatively, to apply the
* property only to some EntityManagers pass it to createEntityManager
* method.
*
* Values (case insensitive):
*
* - "false" (DEFAULT)
*
- "true"
*
*/
public static final String PERSISTENCE_CONTEXT_CLOSE_ON_COMMIT = "eclipselink.persistence-context.close-on-commit";
/**
* The "eclipselink.persistence-context.persist-on-commit"
* property specifies that the EntityManager will search all managed objects
* and persist any related non-managed new objects that are cascade persist.
* This can be used to avoid the cost of performing this search if persist
* is always used for new objects. The property set in persistence.xml or
* passed to createEntityManagerFactory affects all EntityManagers created
* by the factory. Alternatively, to apply the property only to some
* EntityManagers pass it to createEntityManager method.
*
* Values (case insensitive):
*
* - "true" (DEFAULT)
*
- "false"
*
*/
public static final String PERSISTENCE_CONTEXT_PERSIST_ON_COMMIT = "eclipselink.persistence-context.persist-on-commit";
/**
* The
* "eclipselink.persistence-context.commit-without-persist-rules"
* property specifies that the EntityManager will search all managed objects
* and persist any related non-managed new objects that are found ignoring
* any absence of CascadeType.PERSIST settings. Also the Entity life-cycle
* Persist operation will not be cascaded to related entities. This setting
* replicates the traditional EclipseLink native functionality.
*
* Values (case insensitive):
*
* - "false" (DEFAULT)
*
- "true"
*
*/
public static final String PERSISTENCE_CONTEXT_COMMIT_WITHOUT_PERSIST_RULES = "eclipselink.persistence-context.commit-without-persist-rules";
/**
* The "eclipselink.persistence-context.flush-mode
property configures the EntityManager FlushMode to be set as a
* persistence property. This can be set to either "AUTO" or "COMMIT". By
* default the flush mode is AUTO, which requires an automatic flush before
* all query execution. This can be used to avoid any flushing until commit.
* The property set in persistence.xml or passed to
* createEntityManagerFactory affects all EntityManagers created by the
* factory. Alternatively, to apply the property only to some EntityManagers
* pass it to createEntityManager method.
*
* @see EntityManager#setFlushMode(javax.persistence.FlushModeType)
* @see FlushModeType
*/
public static final String PERSISTENCE_CONTEXT_FLUSH_MODE = "eclipselink.persistence-context.flush-mode";
/**
* The "eclipselink.oracle.proxy-type"
property is used to
* specify proxy type that should be passed to
* OracleConnection.openProxySession method. Requires Oracle JDBC version
* 10.1.0.2 or later. Requires Oracle9Platform or later as a database
* platform (TARGET_DATABASE property value should be TargetDatabase.Oracle9
* or later).
*
* Values:
*
* - oracle.jdbc.OracleConnection.PROXYTYPE_USER_NAME,
*
- oracle.jdbc.OracleConnection.PROXYTYPE_DISTINGUISHED_NAME,
*
- oracle.jdbc.OracleConnection.PROXYTYPE_CERTIFICATE.
*
*
* Property values corresponding to the specified type should be also
* provided:
*
* - oracle.jdbc.OracleConnection.PROXY_USER_NAME,
*
- oracle.jdbc.OracleConnection.PROXY_DISTINGUISHED_NAME,
*
- oracle.jdbc.OracleConnection.PROXY_CERTIFICATE.
*
* Typically these properties should be set into EntityManager (either
* through createEntityManager method or using proprietary setProperties
* method on EntityManagerImpl) - that causes EntityManager to use proxy
* connection for writing and reading inside transaction. If proxy-type and
* the corresponding proxy property set into EntityManagerFactory then all
* connections created by the factory will be proxy connections.
*/
public static final String ORACLE_PROXY_TYPE = "eclipselink.oracle.proxy-type";
/**
* The "eclipselink.cache.coordination.protocol"
property
* configures cache coordination for a clustered environment. This needs to
* be set on every persistence unit/session in the cluster. Depending on the
* cache configuration for each descriptor, this will broadcast cache
* updates or inserts to the cluster to update or invalidate each session's
* cache.
*
* Values:
*
* - "jms"
*
- "jms-publishing"
*
- "rmi"
*
- "rmi-iiop"
*
- a
name of a subclass implementation of the TransportManager abstract class.
*
* by default the cache is not coordinated.
*
* @see CacheCoordinationProtocol
* @see Cache#coordinationType()
* @see RemoteCommandManager#setTransportManager(TransportManager)
*/
public static final String COORDINATION_PROTOCOL = "eclipselink.cache.coordination.protocol";
/**
* The "eclipselink.cache.coordination.jms.host"
property
* configures cache coordination for a clustered environment. Only used for
* JMS coordination. Sets the URL for the JMS server hosting the topic.
* This is not required in the topic is distributed across the cluster (can be looked up in local JNDI).
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.jms.JMSTopicTransportManager#setTopicHostUrl(String)
*/
public static final String COORDINATION_JMS_HOST = "eclipselink.cache.coordination.jms.host";
/**
* The "eclipselink.cache.coordination.jms.topic"
property
* configures cache coordination for a clustered environment. Only used for
* JMS coordination. Sets the JMS topic name.
* The default topic JNDI name is "jms/EclipseLinkTopic".
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.broadcast.BroadcastTransportManager#setTopicName(String)
*/
public static final String COORDINATION_JMS_TOPIC = "eclipselink.cache.coordination.jms.topic";
/**
* The "eclipselink.cache.coordination.jms.factory"
property
* configures cache coordination for a clustered environment. Only used for
* JMS coordination. Sets the JMS topic connection factory name.
* The default topic connection factory JNDI name is "jms/EclipseLinkTopicConnectionFactory".
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.broadcast.BroadcastTransportManager#setTopicConnectionFactoryName(String)
*/
public static final String COORDINATION_JMS_FACTORY = "eclipselink.cache.coordination.jms.factory";
/**
* The "eclipselink.cache.coordination.jms.reuse-topic-publisher"
property
* configures cache coordination for a clustered environment. Only used for
* JMS coordination. Sets the JSM transport manager to cache a TopicPubliser
* and reuse it for all cache coordination publishing. Default value if unset is false.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.jms.JMSPublishingTransportManager#setShouldReuseJMSTopicPublisher(boolean)
*/
public static final String COORDINATION_JMS_REUSE_PUBLISHER = "eclipselink.cache.coordination.jms.reuse-topic-publisher";
/**
* The "eclipselink.cache.coordination.rmi.announcement-delay"
* property configures cache coordination for a clustered environment. Only
* used for RMI coordination. Sets the number of milliseconds to wait for
* announcements from other cluster members on startup.
* Default is 1000 milliseconds.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.DiscoveryManager#setAnnouncementDelay(int)
*/
public static final String COORDINATION_RMI_ANNOUNCEMENT_DELAY = "eclipselink.cache.coordination.rmi.announcement-delay";
/**
* The "eclipselink.cache.coordination.rmi.multicast-group"
* property configures cache coordination for a clustered environment. Only
* used for RMI coordination. Sets the multicast socket group address. The
* multicast group is used to find other members of the cluster.
* The default address is 239.192.0.0.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.DiscoveryManager#setMulticastGroupAddress(String)
*/
public static final String COORDINATION_RMI_MULTICAST_GROUP = "eclipselink.cache.coordination.rmi.multicast-group";
/**
* The
* "eclipselink.cache.coordination.rmi.multicast-group.port"
* property configures cache coordination for a clustered environment. Only
* used for RMI coordination. Sets the multicast socket group port. The
* multicast group port is used to find other members of the cluster.
* The default port is 3121.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.DiscoveryManager#setMulticastPort(int)
*/
public static final String COORDINATION_RMI_MULTICAST_GROUP_PORT = "eclipselink.cache.coordination.rmi.multicast-group.port";
/**
* The "eclipselink.cache.coordination.rmi.packet-time-to-live"
* property configures cache coordination for a clustered environment. Only
* used for RMI coordination. Sets the multicast socket packet time to live.
* The multicast group is used to find other members of the cluster. Set the
* number of hops the data packets of the session announcement will take
* before expiring. The default is 2, a hub and an interface card to prevent
* the data packets from leaving the local network.
*
* Note that if sessions are hosted on different LANs that are part of WAN,
* the announcement sending by one session may not reach other sessions. In
* this case, consult your network administrator for the right time-to-live
* value or test your network by increase the value until sessions receive
* announcement sent by others.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.DiscoveryManager#setPacketTimeToLive(int)
*/
public static final String COORDINATION_RMI_PACKET_TIME_TO_LIVE = "eclipselink.cache.coordination.rmi.packet-time-to-live";
/**
* The "eclipselink.cache.coordination.rmi.url"
property
* configures cache coordination for a clustered environment. Only used for
* RMI coordination. Sets the URL of the host server. This is the URL that
* other cluster member should use to connect to this host.
* This may not be required in a clustered enviroment where JNDI is replicated.
* This can also be set as a System property or using a SessionCustomizer to avoid
* a seperate persistence.xml per server.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.RemoteCommandManager#setUrl(String)
*/
public static final String COORDINATION_RMI_URL = "eclipselink.cache.coordination.rmi.url";
/**
* The "eclipselink.cache.coordination.naming-service"
property
* configures cache coordination for a clustered environment. Set the naming
* service to use, either "jndi" or "rmi".
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.TransportManager#setNamingServiceType(int)
*/
public static final String COORDINATION_NAMING_SERVICE = "eclipselink.cache.coordination.naming-service";
/**
* the "eclipselink.cache.coordination.jndi.user"
property
* configures cache coordination for a clustered environment. Set the JNDI
* naming service user name.
* This is not normally require if connecting to the local server.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.TransportManager#setUserName(String)
*/
public static final String COORDINATION_JNDI_USER = "eclipselink.cache.coordination.jndi.user";
/**
* The "eclipselink.cache.coordination.jndi.password"
property
* configures cache coordination for a clustered environment. Set the JNDI
* naming service user name.
* This is not normally require if connecting to the local server.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.TransportManager#setPassword(String)
*/
public static final String COORDINATION_JNDI_PASSWORD = "eclipselink.cache.coordination.jndi.password";
/**
* The
* "eclipselink.cache.coordination.jndi.initial-context-factory"
* property configures cache coordination for a clustered environment. Set
* the JNDI InitialContext factory.
* This is not normally require if connecting to the local server.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.TransportManager#setInitialContextFactoryName(String)
*/
public static final String COORDINATION_JNDI_CONTEXT = "eclipselink.cache.coordination.jndi.initial-context-factory";
/**
* The
* "eclipselink.cache.coordination.remove-connection-on-error"
* property configures cache coordination for a clustered environment. Set
* if the connection should be removed if a communication error occurs when
* coordinating with it. This is normally used for RMI coordination in case
* a server goes down (it will reconnect when it comes back up).
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.TransportManager#setShouldRemoveConnectionOnError(boolean)
*/
public static final String COORDINATION_REMOVE_CONNECTION = "eclipselink.cache.coordination.remove-connection-on-error";
/**
* the
* "eclipselink.cache.coordination.propagate-asynchronously"
* property configures cache coordination for a clustered environment. Set
* if the coordination broadcast should occur asynchronously with the
* committing thread. This means the coordination will be complete before
* the thread returns from the commit of the transaction. Note that JMS is
* always asynchronous. By default RMI is asynchronous.
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.RemoteCommandManager#setShouldPropagateAsynchronously(boolean)
*/
public static final String COORDINATION_ASYNCH = "eclipselink.cache.coordination.propagate-asynchronously";
/**
* the "eclipselink.cache.coordination.channel"
property
* configures cache coordination for a clustered environment. Set if the
* channel for this cluster. All server's in the same channel will be
* coordinated. The default channel name is "EclipseLinkCommandChannel".
*
* @see #COORDINATION_PROTOCOL
* @see org.eclipse.persistence.sessions.coordination.RemoteCommandManager#setChannel(String)
*/
public static final String COORDINATION_CHANNEL = "eclipselink.cache.coordination.channel";
/**
* Indicates if it's a composite persistence unit ("true").
* The property must be specified in persistence.xml of a composite persistence unit.
* The property passed to createEntityManagerFactory method or in system properties is ignored.
* Composite persistence unit would contain all persistence units found in jar files specified by elements in persistence.xml.
* member1.jar
* member2.jar
*
*
*
* @see #COMPOSITE_UNIT_MEMBER
* @see #COMPOSITE_UNIT_PROPERTIES
*/
public static final String COMPOSITE_UNIT = "eclipselink.composite-unit";
/**
* Indicates if the persistence unit must be a member of a composite persistence unit ("true"),
* can't be used as an independent persistence unit.
* That happens if persistence unit has dependencies on other persistence unit(s).
* The property may be specified in persistence.xml.
* The property passed to createEntityManagerFactory method or in system properties is ignored.
* If this property is set to true, EntityManagerFactory still could be created,
* but it can't be connected: an attempt to create entity manager would cause an exception.
* @see #COMPOSITE_UNIT
* @see #COMPOSITE_UNIT_PROPERTIES
*/
public static final String COMPOSITE_UNIT_MEMBER = "eclipselink.composite-unit.member";
/**
* The property may be passed to createEntityManagerFactory method of a composite persistence unit
* to pass properties to member persistence units.
* The value is a map:
* the key is a member persistence unit's name,
* the value is a map of properties to be passed to this persistence unit.
* "eclipselink.composite-unit.properties" -> (
* ("memberPu1" -> ( "javax.persistence.jdbc.user" -> "user1",
* "javax.persistence.jdbc.password" -> "password1",
* "javax.persistence.jdbc.driver" -> "oracle.jdbc.OracleDriver",
* "javax.persistence.jdbc.url" -> "jdbc:oracle:thin:@oracle_db_url:1521:db",
* ) ,
* ("memberPu2" -> ( "javax.persistence.jdbc.user" -> "user2",
* "javax.persistence.jdbc.password" -> "password2"
* "javax.persistence.jdbc.driver" -> "com.mysql.jdbc.Driver",
* "javax.persistence.jdbc.url" -> "jdbc:mysql://my_sql_db_url:3306/user2",
* )
* )
* @see #COMPOSITE_UNIT
*/
public static final String COMPOSITE_UNIT_PROPERTIES = "eclipselink.composite-unit.properties";
/**
* INTERNAL: The following properties will not be displayed through logging
* but instead have an alternate value shown in the log.
*/
public static final Map PROPERTY_LOG_OVERRIDES = new HashMap(1);
static {
PROPERTY_LOG_OVERRIDES.put(JDBC_PASSWORD, "xxxxxx");
}
/**
* INTERNAL: Return the overridden log string.
*/
public static String getOverriddenLogStringForProperty(String propertyName) {
return PROPERTY_LOG_OVERRIDES.get(propertyName);
}
/**
* INTERNAL: The following properties passed to
* {@link Persistence#createEntityManagerFactory(String, Map)} cached and
* processed on the {@link EntityManagerFactory} directly. None of these
* properties processed during pre-deploy or deploy.
**/
private static final Set supportedNonServerSessionProperties = new HashSet() {
{
add(JOIN_EXISTING_TRANSACTION);
add(PERSISTENCE_CONTEXT_REFERENCE_MODE);
add(PERSISTENCE_CONTEXT_FLUSH_MODE);
add(PERSISTENCE_CONTEXT_CLOSE_ON_COMMIT);
add(PERSISTENCE_CONTEXT_PERSIST_ON_COMMIT);
add(PERSISTENCE_CONTEXT_COMMIT_WITHOUT_PERSIST_RULES);
add(VALIDATE_EXISTENCE);
add(ORDER_UPDATES);
add(FLUSH_CLEAR_CACHE);
}
};
public static Set getSupportedNonServerSessionProperties() {
return Collections.unmodifiableSet(supportedNonServerSessionProperties);
}
}