Class SystemProperties


  • public class SystemProperties
    extends java.lang.Object
    This class provides the list of System properties that are recognized by EclipseLink.
    Author:
    tware
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String ARCHIVE_FACTORY
      Configures the factory class we use to produce instances of org.eclispe.persistence.jpa.Archive These instances are used to examine persistence units and the files within them and are used for discovery of classes in the persistence unit Allows user-provided ArchiveFactory and Archive
      static java.lang.String CONCURRENCY_MANAGER_ACQUIRE_WAIT_TIME
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager.
      static java.lang.String CONCURRENCY_MANAGER_ALLOW_CONCURRENCY_EXCEPTION
      This property control (enable/disable) if ConcurrencyException fired when dead-lock diagnostic is enabled.
      static java.lang.String CONCURRENCY_MANAGER_ALLOW_INTERRUPTED_EXCEPTION
      This property control (enable/disable) if InterruptedException fired when dead-lock diagnostic is enabled.
      static java.lang.String CONCURRENCY_MANAGER_ALLOW_STACK_TRACE_READ_LOCK
      This property control (enable/disable) collection debug/trace information during ReadLock acquisition, when dead-lock diagnostic is enabled.
      static java.lang.String CONCURRENCY_MANAGER_BUILD_OBJECT_COMPLETE_WAIT_TIME
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager.
      static java.lang.String CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_MASSIVE_MESSAGE
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager and org.eclipse.persistence.internal.helper.ConcurrencyUtil.
      static java.lang.String CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_TINY_MESSAGE
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager and org.eclipse.persistence.internal.helper.ConcurrencyUtil.
      static java.lang.String CONCURRENCY_MANAGER_MAX_SLEEP_TIME
      This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager.
      static java.lang.String CONCURRENCY_MANAGER_OBJECT_BUILDING_NO_THREADS
      This property control number of threads in semaphore in ObjectBuilder If "eclipselink.concurrency.manager.object.building.semaphore" property is true default value is 10.
      static java.lang.String CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_OBJECT_BUILDING
      This property control (enable/disable) semaphore in ObjectBuilder
      static java.lang.String CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS
      This property control (enable/disable) semaphore in WriteLockManager.acquireRequiredLocks(org.eclipse.persistence.internal.sessions.MergeManager, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet)
      static java.lang.String CONCURRENCY_MANAGER_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS_NO_THREADS
      This property control number of threads in semaphore in WriteLockManager.acquireRequiredLocks(org.eclipse.persistence.internal.sessions.MergeManager, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet) If "eclipselink.concurrency.manager.write.lock.manager.semaphore" property is true default value is 2.
      static java.lang.String CONCURRENCY_SEMAPHORE_LOG_TIMEOUT
      This property control timeout between log messages in ConcurrencySemaphore.acquireSemaphoreIfAppropriate(boolean) when method/thread tries to get permit for the execution.
      static java.lang.String CONCURRENCY_SEMAPHORE_MAX_TIME_PERMIT
      This property control semaphore the maximum time to wait for a permit in ConcurrencySemaphore.acquireSemaphoreIfAppropriate(boolean) It's passed to Semaphore.tryAcquire(long, TimeUnit) Default value is 2000 (unit is ms).
      static java.lang.String CONVERSION_USE_DEFAULT_TIMEZONE
      This system property can be set to restore ConversionManager behavior with converting LocalDateTime, OffsetDateTime, and OffsetTime types back to using the JVM's default time zone instead of UTC.
      static java.lang.String CONVERSION_USE_TIMEZONE
      This system property can be set the specific time zone used by ConversionManager to convert LocalDateTime, OffsetDateTime, and OffsetTime types.
      static java.lang.String DO_NOT_PROCESS_XTOMANY_FOR_QBE
      This property can be set to disable processing of X-Many relationship attributes for Query By Example objects.
      static java.lang.String ENFORCE_TARGET_SERVER
      This system property can be set to override target server platform set by the Java EE container with the one either set in persistence.xml or auto detected.
      static java.lang.String ONETOMANY_DEFER_INSERTS
      This property can be set to false to enable UPDATE call to set foreign key value in the target row in unidirectional 1-Many mapping with not nullable FK.
      static java.lang.String RECORD_STACK_ON_LOCK
      This property is used in conjunction with org.eclipse.persistence.sessions.IdentityMapAccessor.printIdentityMapLocks().
      static java.lang.String WEAVING_OUTPUT_PATH
      This property is used to debug weaving issues.
      static java.lang.String WEAVING_REFLECTIVE_INTROSPECTION
      This property can be used to tell EclipseLink to process classes in the ASM Default manner.
      static java.lang.String WEAVING_SHOULD_OVERWRITE
      This property is used in conjunction with WEAVING_OUTPUT_PATH.
    • Method Summary

      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ARCHIVE_FACTORY

        public static final java.lang.String ARCHIVE_FACTORY
        Configures the factory class we use to produce instances of org.eclispe.persistence.jpa.Archive These instances are used to examine persistence units and the files within them and are used for discovery of classes in the persistence unit Allows user-provided ArchiveFactory and Archive
        See Also:
        Constant Field Values
      • WEAVING_OUTPUT_PATH

        public static final java.lang.String WEAVING_OUTPUT_PATH
        This property is used to debug weaving issues. When it is set, weaved classes will be output to the given path as they are weaved
        See Also:
        Constant Field Values
      • WEAVING_SHOULD_OVERWRITE

        public static final java.lang.String WEAVING_SHOULD_OVERWRITE
        This property is used in conjunction with WEAVING_OUTPUT_PATH. By default, existing classes on the path provided to WEAVING_OUTPUT_PATH will not be overridden. If this is set to true, they will be
        See Also:
        Constant Field Values
      • WEAVING_REFLECTIVE_INTROSPECTION

        public static final java.lang.String WEAVING_REFLECTIVE_INTROSPECTION
        This property can be used to tell EclipseLink to process classes in the ASM Default manner. The fix for bug 370975 changes EclipseLink's weaving support to use ASM itself to examine class hierarchies. Setting this flag to true will cause us to use the default reflection mechanism again. This flag provides a means to workaround any issues encountered with the ASM-based weaving introspection
        See Also:
        Constant Field Values
      • RECORD_STACK_ON_LOCK

        public static final java.lang.String RECORD_STACK_ON_LOCK
        This property is used in conjunction with org.eclipse.persistence.sessions.IdentityMapAccessor.printIdentityMapLocks(). Setting this property will cause EclipseLink to record the stack trace of the lock acquisition and print it along with the identity map locks. This should only be set if the thread that owns a lock is not 'stuck' but still owns the lock when a normal printIdentityMapLocks is done. This can also be set in code statically through ConcurrencyManager.setShouldTrackStack(true)
        See Also:
        Constant Field Values
      • DO_NOT_PROCESS_XTOMANY_FOR_QBE

        public static final java.lang.String DO_NOT_PROCESS_XTOMANY_FOR_QBE
        This property can be set to disable processing of X-Many relationship attributes for Query By Example objects. In previous versions of EclipseLink these attributes would have been ignored but as of this release they will be processed into the expression.
        See Also:
        Constant Field Values
      • ONETOMANY_DEFER_INSERTS

        public static final java.lang.String ONETOMANY_DEFER_INSERTS
        This property can be set to false to enable UPDATE call to set foreign key value in the target row in unidirectional 1-Many mapping with not nullable FK. In previous versions of EclipseLink this was the default behaviour. Allowed values are: true/false.
        See Also:
        Constant Field Values
      • ENFORCE_TARGET_SERVER

        public static final java.lang.String ENFORCE_TARGET_SERVER
        This system property can be set to override target server platform set by the Java EE container with the one either set in persistence.xml or auto detected.
        See Also:
        Constant Field Values
      • CONVERSION_USE_TIMEZONE

        public static final java.lang.String CONVERSION_USE_TIMEZONE
        This system property can be set the specific time zone used by ConversionManager to convert LocalDateTime, OffsetDateTime, and OffsetTime types.
        See Also:
        Constant Field Values
      • CONVERSION_USE_DEFAULT_TIMEZONE

        public static final java.lang.String CONVERSION_USE_DEFAULT_TIMEZONE
        This system property can be set to restore ConversionManager behavior with converting LocalDateTime, OffsetDateTime, and OffsetTime types back to using the JVM's default time zone instead of UTC. This restores behavior prior to fixing Bug 538296. This property is ignored if the System Property CONVERSION_USE_TIMEZONE has been set.
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_ACQUIRE_WAIT_TIME

        public static final java.lang.String CONCURRENCY_MANAGER_ACQUIRE_WAIT_TIME
        This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager. It control how much time loop wait before it try acquire lock for current thread again. It value is set above above 0 dead lock detection mechanism and related extended logging will be activated. Default value is 0 (unit is ms). Allowed values are: long
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_BUILD_OBJECT_COMPLETE_WAIT_TIME

        public static final java.lang.String CONCURRENCY_MANAGER_BUILD_OBJECT_COMPLETE_WAIT_TIME
        This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager. It control how much time ConcurrencyManager will wait before it will identify, that thread which builds new object/entity instance should be identified as a potential dead lock source. It leads into some additional log messages. Default value is 0 (unit is ms). In this case extended logging is not active. Allowed values are: long
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_MAX_SLEEP_TIME

        public static final java.lang.String CONCURRENCY_MANAGER_MAX_SLEEP_TIME
        This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager. It control how long we are willing to wait before firing up an exception Default value is 40000 (unit is ms). Allowed values are: long
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_TINY_MESSAGE

        public static final java.lang.String CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_TINY_MESSAGE
        This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager and org.eclipse.persistence.internal.helper.ConcurrencyUtil. It control how frequently the tiny dump log message is created. Default value is 40000 (unit is ms). Allowed values are: long
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_MASSIVE_MESSAGE

        public static final java.lang.String CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_MASSIVE_MESSAGE
        This system property in milliseconds can control thread management in org.eclipse.persistence.internal.helper.ConcurrencyManager and org.eclipse.persistence.internal.helper.ConcurrencyUtil. It control how frequently the massive dump log message is created. Default value is 60000 (unit is ms). Allowed values are: long
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_ALLOW_INTERRUPTED_EXCEPTION

        public static final java.lang.String CONCURRENCY_MANAGER_ALLOW_INTERRUPTED_EXCEPTION

        This property control (enable/disable) if InterruptedException fired when dead-lock diagnostic is enabled.

        Allowed Values (case sensitive String):

        • "false" - if aborting frozen thread is not effective it is preferable to not fire the interrupted exception let the system In the places where use this property normally if a thread is stuck it is because it is doing object building. Blowing the threads ups is not that dangerous. It can be very dangerous for production if the dead lock ends up not being resolved because the productive business transactions will become cancelled if the application has a limited number of retries to for example process an MDB. However, the code spots where we use this constant are not as sensible as when the write lock manager is starving to run commit.
        • "true" (DEFAULT) - if we want the to fire up an exception to try to get the current thread to release all of its acquired locks and allow other threads to progress.
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_ALLOW_CONCURRENCY_EXCEPTION

        public static final java.lang.String CONCURRENCY_MANAGER_ALLOW_CONCURRENCY_EXCEPTION

        This property control (enable/disable) if ConcurrencyException fired when dead-lock diagnostic is enabled.

        Allowed Values (case sensitive String):

        • "false" - if aborting frozen thread is not effective it is preferable to not fire the concurrency exception let the system freeze and die and force the administration to kill the server. This is preferable to aborting the transactions multiple times without success in resolving the dead lock and having business critical messages that after 3 JMS retries are discarded out. Failing to resolve a dead lock can have terrible impact in system recovery unless we have infinite retries for the business transactions.
        • "true" (DEFAULT) - if we want the to fire up an exception to try to get the current thread to release all of its acquired locks and allow other threads to progress.
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_ALLOW_STACK_TRACE_READ_LOCK

        public static final java.lang.String CONCURRENCY_MANAGER_ALLOW_STACK_TRACE_READ_LOCK

        This property control (enable/disable) collection debug/trace information during ReadLock acquisition, when dead-lock diagnostic is enabled.

        Allowed Values (case sensitive String):

        • "false" (DEFAULT) - don't collect debug/trace information during ReadLock acquisition
        • "true" - collect debug/trace information during ReadLock acquisition. Has negative impact to the performance.
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_OBJECT_BUILDING

        public static final java.lang.String CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_OBJECT_BUILDING

        This property control (enable/disable) semaphore in ObjectBuilder

        Object building see ObjectBuilder could be one of the primary sources pressure on concurrency manager. Most of the cache key acquisition and releasing is taking place during object building. Enable true this property to try reduce the likelihood of having dead locks is to allow less threads to start object building in parallel. In this case there should be negative impact to the performance. Note: Parallel access to the same entity/entity tree from different threads is not recommended technique in EclipseLink.
        • "true" - means we want to override vanilla behavior and use a semaphore to not allow too many threads in parallel to do object building
        • "false" (DEFAULT) - means just go ahead and try to build the object without any semaphore (false is vanilla behavior).
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS

        public static final java.lang.String CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS

        This property control (enable/disable) semaphore in WriteLockManager.acquireRequiredLocks(org.eclipse.persistence.internal.sessions.MergeManager, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet)

        This algorithm WriteLockManager.acquireRequiredLocks(org.eclipse.persistence.internal.sessions.MergeManager, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet) is being used when a transaction is committing and it is acquire locks to merge the change set. It should happen if algorithm has trouble when multiple threads report change sets on the same entity (e.g. one-to-many relations of master detail being enriched with more details on this master). Note: Parallel access to the same entity/entity tree from different threads is not recommended technique in EclipseLink.
        • "true" - means we want to override vanilla behavior and use a semaphore to not allow too many threads. In this case there should be negative impact to the performance.
        • "false" (DEFAULT) - means just go ahead and try to build the object without any semaphore (false is vanilla behavior).
        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_OBJECT_BUILDING_NO_THREADS

        public static final java.lang.String CONCURRENCY_MANAGER_OBJECT_BUILDING_NO_THREADS

        This property control number of threads in semaphore in ObjectBuilder If "eclipselink.concurrency.manager.object.building.semaphore" property is true default value is 10. Allowed values are: int If "eclipselink.concurrency.manager.object.building.semaphore" property is false (DEFAULT) number of threads is unlimited.

        See Also:
        Constant Field Values
      • CONCURRENCY_MANAGER_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS_NO_THREADS

        public static final java.lang.String CONCURRENCY_MANAGER_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS_NO_THREADS

        This property control number of threads in semaphore in WriteLockManager.acquireRequiredLocks(org.eclipse.persistence.internal.sessions.MergeManager, org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet) If "eclipselink.concurrency.manager.write.lock.manager.semaphore" property is true default value is 2. Allowed values are: int If "eclipselink.concurrency.manager.write.lock.manager.semaphore" property is false (DEFAULT) number of threads is unlimited.

        See Also:
        Constant Field Values
      • CONCURRENCY_SEMAPHORE_MAX_TIME_PERMIT

        public static final java.lang.String CONCURRENCY_SEMAPHORE_MAX_TIME_PERMIT

        This property control semaphore the maximum time to wait for a permit in ConcurrencySemaphore.acquireSemaphoreIfAppropriate(boolean) It's passed to Semaphore.tryAcquire(long, TimeUnit) Default value is 2000 (unit is ms). Allowed values are: long

        See Also:
        Constant Field Values
      • CONCURRENCY_SEMAPHORE_LOG_TIMEOUT

        public static final java.lang.String CONCURRENCY_SEMAPHORE_LOG_TIMEOUT

        This property control timeout between log messages in ConcurrencySemaphore.acquireSemaphoreIfAppropriate(boolean) when method/thread tries to get permit for the execution. Default value is 10000 (unit is ms). Allowed values are: long

        See Also:
        Constant Field Values
    • Constructor Detail

      • SystemProperties

        public SystemProperties()