All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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); } }