Class SystemProperties

java.lang.Object
org.eclipse.persistence.config.SystemProperties

public class SystemProperties extends Object
This class provides the list of System properties that are recognized by EclipseLink.
  • Field Details

    • ARCHIVE_FACTORY

      public static final 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:
    • WEAVING_OUTPUT_PATH

      public static final 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:
    • WEAVING_SHOULD_OVERWRITE

      public static final 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:
    • WEAVING_REFLECTIVE_INTROSPECTION

      public static final 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:
    • RECORD_STACK_ON_LOCK

      public static final 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:
    • DO_NOT_PROCESS_XTOMANY_FOR_QBE

      public static final 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:
    • ENFORCE_TARGET_SERVER

      public static final 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:
    • CONVERSION_USE_TIMEZONE

      public static final 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:
    • CONVERSION_USE_DEFAULT_TIMEZONE

      public static final 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:
    • ONETOMANY_DEFER_INSERTS

      public static final 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:
    • CONCURRENCY_MANAGER_ACQUIRE_WAIT_TIME

      public static final 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:
    • CONCURRENCY_MANAGER_BUILD_OBJECT_COMPLETE_WAIT_TIME

      public static final 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:
    • CONCURRENCY_MANAGER_MAX_SLEEP_TIME

      public static final 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:
    • CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_TINY_MESSAGE

      public static final 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:
    • CONCURRENCY_MANAGER_MAX_FREQUENCY_DUMP_MASSIVE_MESSAGE

      public static final 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:
    • CONCURRENCY_MANAGER_ALLOW_INTERRUPTED_EXCEPTION

      public static final 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:
    • CONCURRENCY_MANAGER_ALLOW_CONCURRENCY_EXCEPTION

      public static final 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:
    • CONCURRENCY_MANAGER_ALLOW_STACK_TRACE_READ_LOCK

      public static final 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:
    • CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_OBJECT_BUILDING

      public static final 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:
    • CONCURRENCY_MANAGER_USE_SEMAPHORE_TO_SLOW_DOWN_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS

      public static final 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:
    • CONCURRENCY_MANAGER_OBJECT_BUILDING_NO_THREADS

      public static final 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:
    • CONCURRENCY_MANAGER_WRITE_LOCK_MANAGER_ACQUIRE_REQUIRED_LOCKS_NO_THREADS

      public static final 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:
    • CONCURRENCY_SEMAPHORE_MAX_TIME_PERMIT

      public static final 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:
    • CONCURRENCY_SEMAPHORE_LOG_TIMEOUT

      public static final 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:
    • ASM_SERVICE

      public static final String ASM_SERVICE

      This property control which ASM implementation is used for classes bytecode modification.

      Allowed Values (case sensitive String):

      • "eclipselink" (DEFAULT) - use ASM implementation from org.eclipse.persistence.asm project.
      • "ow2" - use ASM implementation from org.ow2.asm project.
      See Also:
  • Constructor Details

    • SystemProperties

      @Deprecated(since="4.0.3", forRemoval=true) public SystemProperties()
      Deprecated, for removal: This API element is subject to removal in a future version.
      This constructor will be marked private and the class final. It is not designed for extensibility.