Package bitronix.tm

Class Configuration

java.lang.Object
bitronix.tm.Configuration
All Implemented Interfaces:
Service

public class Configuration extends Object implements Service
Configuration repository of the transaction manager. You can set configurable values either via the properties file or by setting properties of the Configuration object. Once the transaction manager has started it is not possible to change the configuration: all calls to setters will throw a IllegalStateException.

The configuration filename must be specified with the bitronix.tm.configuration system property.

The default settings are good enough for running in a test environment but certainly not for production usage. Also, all properties are reset to their default value after the transaction manager has shut down.

All those properties can refer to other defined ones or to system properties using the Ant notation: ${some.property.name}.

Author:
lorban
  • Constructor Details

    • Configuration

      protected Configuration()
  • Method Details

    • getServerId

      public String getServerId()
      ASCII ID that must uniquely identify this TM instance. It must not exceed 51 characters or it will be truncated.

      Property name:
      bitronix.tm.serverId - (defaults to server's IP address but that's unsafe for production use)

      Returns:
      the unique ID of this TM instance.
    • setServerId

      public Configuration setServerId(String serverId)
      Set the ASCII ID that must uniquely identify this TM instance. It must not exceed 51 characters or it will be truncated.
      Parameters:
      serverId - the unique ID of this TM instance.
      Returns:
      this.
      See Also:
    • getLogPart1Filename

      public String getLogPart1Filename()
      Get the journal fragment file 1 name.

      Property name:
      bitronix.tm.journal.disk.logPart1Filename - (defaults to btm1.tlog)

      Returns:
      the journal fragment file 1 name.
    • setLogPart1Filename

      public Configuration setLogPart1Filename(String logPart1Filename)
      Set the journal fragment file 1 name.
      Parameters:
      logPart1Filename - the journal fragment file 1 name.
      Returns:
      this.
      See Also:
    • getLogPart2Filename

      public String getLogPart2Filename()
      Get the journal fragment file 2 name.

      Property name:
      bitronix.tm.journal.disk.logPart2Filename - (defaults to btm2.tlog)

      Returns:
      the journal fragment file 2 name.
    • setLogPart2Filename

      public Configuration setLogPart2Filename(String logPart2Filename)
      Set the journal fragment file 2 name.
      Parameters:
      logPart2Filename - the journal fragment file 2 name.
      Returns:
      this.
      See Also:
    • isForcedWriteEnabled

      public boolean isForcedWriteEnabled()
      Are logs forced to disk? Do not set to false in production since without disk force, integrity is not guaranteed.

      Property name:
      bitronix.tm.journal.disk.forcedWriteEnabled - (defaults to true)

      Returns:
      true if logs are forced to disk, false otherwise.
    • setForcedWriteEnabled

      public Configuration setForcedWriteEnabled(boolean forcedWriteEnabled)
      Set if logs are forced to disk. Do not set to false in production since without disk force, integrity is not guaranteed.
      Parameters:
      forcedWriteEnabled - true if logs should be forced to disk, false otherwise.
      Returns:
      this.
      See Also:
    • isForceBatchingEnabled

      public boolean isForceBatchingEnabled()
      Are disk forces batched? Disabling batching can seriously lower the transaction manager's throughput.

      Property name:
      bitronix.tm.journal.disk.forceBatchingEnabled - (defaults to true)

      Returns:
      true if disk forces are batched, false otherwise.
    • setForceBatchingEnabled

      public Configuration setForceBatchingEnabled(boolean forceBatchingEnabled)
      Set if disk forces are batched. Disabling batching can seriously lower the transaction manager's throughput.
      Parameters:
      forceBatchingEnabled - true if disk forces are batched, false otherwise.
      Returns:
      this.
      See Also:
    • getMaxLogSizeInMb

      public int getMaxLogSizeInMb()
      Maximum size in megabytes of the journal fragments. Larger logs allow transactions to stay longer in-doubt but the TM pauses longer when a fragment is full.

      Property name:
      bitronix.tm.journal.disk.maxLogSize - (defaults to 2)

      Returns:
      the maximum size in megabytes of the journal fragments.
    • setMaxLogSizeInMb

      public Configuration setMaxLogSizeInMb(int maxLogSizeInMb)
      Set the Maximum size in megabytes of the journal fragments. Larger logs allow transactions to stay longer in-doubt but the TM pauses longer when a fragment is full.
      Parameters:
      maxLogSizeInMb - the maximum size in megabytes of the journal fragments.
      Returns:
      this.
      See Also:
    • isFilterLogStatus

      public boolean isFilterLogStatus()
      Should only mandatory logs be written? Enabling this parameter lowers space usage of the fragments but makes debugging more complex.

      Property name:
      bitronix.tm.journal.disk.filterLogStatus - (defaults to false)

      Returns:
      true if only mandatory logs should be written.
    • setFilterLogStatus

      public Configuration setFilterLogStatus(boolean filterLogStatus)
      Set if only mandatory logs should be written. Enabling this parameter lowers space usage of the fragments but makes debugging more complex.
      Parameters:
      filterLogStatus - true if only mandatory logs should be written.
      Returns:
      this.
      See Also:
    • isSkipCorruptedLogs

      public boolean isSkipCorruptedLogs()
      Should corrupted logs be skipped?

      Property name:
      bitronix.tm.journal.disk.skipCorruptedLogs - (defaults to false)

      Returns:
      true if corrupted logs should be skipped.
    • setSkipCorruptedLogs

      public Configuration setSkipCorruptedLogs(boolean skipCorruptedLogs)
      Set if corrupted logs should be skipped.
      Parameters:
      skipCorruptedLogs - true if corrupted logs should be skipped.
      Returns:
      this.
      See Also:
    • isAsynchronous2Pc

      public boolean isAsynchronous2Pc()
      Should two phase commit be executed asynchronously? Asynchronous two phase commit can improve performance when there are many resources enlisted in transactions but is more CPU intensive due to the dynamic thread spawning requirements. It also makes debugging more complex.

      Property name:
      bitronix.tm.2pc.async - (defaults to false)

      Returns:
      true if two phase commit should be executed asynchronously.
    • setAsynchronous2Pc

      public Configuration setAsynchronous2Pc(boolean asynchronous2Pc)
      Set if two phase commit should be executed asynchronously. Asynchronous two phase commit can improve performance when there are many resources enlisted in transactions but is more CPU intensive due to the dynamic thread spawning requirements. It also makes debugging more complex.
      Parameters:
      asynchronous2Pc - true if two phase commit should be executed asynchronously.
      Returns:
      this.
      See Also:
    • isWarnAboutZeroResourceTransaction

      public boolean isWarnAboutZeroResourceTransaction()
      Should transactions executed without a single enlisted resource result in a warning or not? Most of the time transactions executed with no enlisted resource reflect a bug or a mis-configuration somewhere.

      Property name:
      bitronix.tm.2pc.warnAboutZeroResourceTransactions - (defaults to true)

      Returns:
      true if transactions executed without a single enlisted resource should result in a warning.
    • setWarnAboutZeroResourceTransaction

      public Configuration setWarnAboutZeroResourceTransaction(boolean warnAboutZeroResourceTransaction)
      Set if transactions executed without a single enlisted resource should result in a warning or not. Most of the time transactions executed with no enlisted resource reflect a bug or a mis-configuration somewhere.
      Parameters:
      warnAboutZeroResourceTransaction - true if transactions executed without a single enlisted resource should result in a warning.
      Returns:
      this.
      See Also:
    • isDebugZeroResourceTransaction

      public boolean isDebugZeroResourceTransaction()
      Should creation and commit call stacks of transactions executed without a single enlisted tracked and logged or not?

      Property name:
      bitronix.tm.2pc.debugZeroResourceTransactions - (defaults to false)

      Returns:
      true if creation and commit call stacks of transactions executed without a single enlisted resource should be tracked and logged.
    • setDebugZeroResourceTransaction

      public Configuration setDebugZeroResourceTransaction(boolean debugZeroResourceTransaction)
      Set if creation and commit call stacks of transactions executed without a single enlisted resource should be tracked and logged.
      Parameters:
      debugZeroResourceTransaction - true if the creation and commit call stacks of transaction executed without a single enlisted resource should be tracked and logged.
      Returns:
      this.
      See Also:
    • getDefaultTransactionTimeout

      public int getDefaultTransactionTimeout()
      Default transaction timeout in seconds.

      Property name:
      bitronix.tm.timer.defaultTransactionTimeout - (defaults to 60)

      Returns:
      the default transaction timeout in seconds.
    • setDefaultTransactionTimeout

      public Configuration setDefaultTransactionTimeout(int defaultTransactionTimeout)
      Set the default transaction timeout in seconds.
      Parameters:
      defaultTransactionTimeout - the default transaction timeout in seconds.
      Returns:
      this.
      See Also:
    • getGracefulShutdownInterval

      public int getGracefulShutdownInterval()
      Maximum amount of seconds the TM will wait for transactions to get done before aborting them at shutdown time.

      Property name:
      bitronix.tm.timer.gracefulShutdownInterval - (defaults to 60)

      Returns:
      the maximum amount of time in seconds.
    • setGracefulShutdownInterval

      public Configuration setGracefulShutdownInterval(int gracefulShutdownInterval)
      Set the maximum amount of seconds the TM will wait for transactions to get done before aborting them at shutdown time.
      Parameters:
      gracefulShutdownInterval - the maximum amount of time in seconds.
      Returns:
      this.
      See Also:
    • getBackgroundRecoveryInterval

      @Deprecated public int getBackgroundRecoveryInterval()
      Deprecated.
      superceded by #getBackgroundRecoveryIntervalSeconds().
      Interval in minutes at which to run the recovery process in the background. Disabled when set to 0.

      Property name:
      bitronix.tm.timer.backgroundRecoveryInterval - (defaults to 0)

      Returns:
      the interval in minutes.
    • setBackgroundRecoveryInterval

      @Deprecated public Configuration setBackgroundRecoveryInterval(int backgroundRecoveryInterval)
      Deprecated.
      superceded by #setBackgroundRecoveryIntervalSeconds(int).
      Set the interval in minutes at which to run the recovery process in the background. Disabled when set to 0.
      Parameters:
      backgroundRecoveryInterval - the interval in minutes.
      Returns:
      this.
      See Also:
    • getBackgroundRecoveryIntervalSeconds

      public int getBackgroundRecoveryIntervalSeconds()
      Interval in seconds at which to run the recovery process in the background. Disabled when set to 0.

      Property name:
      bitronix.tm.timer.backgroundRecoveryIntervalSeconds - (defaults to 60)

      Returns:
      the interval in seconds.
    • setBackgroundRecoveryIntervalSeconds

      public Configuration setBackgroundRecoveryIntervalSeconds(int backgroundRecoveryIntervalSeconds)
      Set the interval in seconds at which to run the recovery process in the background. Disabled when set to 0.
      Parameters:
      backgroundRecoveryIntervalSeconds - the interval in minutes.
      Returns:
      this.
      See Also:
    • isDisableJmx

      public boolean isDisableJmx()
      Should JMX Mbeans not be registered even if a JMX MBean server is detected?

      Property name:
      bitronix.tm.disableJmx - (defaults to false)

      Returns:
      true if JMX MBeans should never be registered.
    • setDisableJmx

      public Configuration setDisableJmx(boolean disableJmx)
      Set to true if JMX Mbeans should not be registered even if a JMX MBean server is detected.
      Parameters:
      disableJmx - true if JMX MBeans should never be registered.
      Returns:
      this.
      See Also:
    • getJndiUserTransactionName

      public String getJndiUserTransactionName()
      Get the name the UserTransaction should be bound under in the BitronixContext.
      Returns:
      the name the UserTransaction should be bound under in the BitronixContext.
    • setJndiUserTransactionName

      public Configuration setJndiUserTransactionName(String jndiUserTransactionName)
      Set the name the UserTransaction should be bound under in the BitronixContext.
      Parameters:
      jndiUserTransactionName - the name the UserTransaction should be bound under in the BitronixContext.
      Returns:
      this.
      See Also:
    • getJndiTransactionSynchronizationRegistryName

      public String getJndiTransactionSynchronizationRegistryName()
      Get the name the TransactionSynchronizationRegistry should be bound under in the BitronixContext.
      Returns:
      the name the TransactionSynchronizationRegistry should be bound under in the BitronixContext.
    • setJndiTransactionSynchronizationRegistryName

      public Configuration setJndiTransactionSynchronizationRegistryName(String jndiTransactionSynchronizationRegistryName)
      Set the name the TransactionSynchronizationRegistry should be bound under in the BitronixContext.
      Parameters:
      jndiTransactionSynchronizationRegistryName - the name the TransactionSynchronizationRegistry should be bound under in the BitronixContext.
      Returns:
      this.
      See Also:
    • getJournal

      public String getJournal()
      Get the journal implementation. Can be disk, null or a class name.
      Returns:
      the journal name.
    • setJournal

      public Configuration setJournal(String journal)
      Set the journal name. Can be disk, null or a class name.
      Parameters:
      journal - the journal name.
      Returns:
      this.
      See Also:
    • getExceptionAnalyzer

      public String getExceptionAnalyzer()
      Get the exception analyzer implementation. Can be null for the default one or a class name.
      Returns:
      the exception analyzer name.
    • setExceptionAnalyzer

      public Configuration setExceptionAnalyzer(String exceptionAnalyzer)
      Set the exception analyzer implementation. Can be null for the default one or a class name.
      Parameters:
      exceptionAnalyzer - the exception analyzer name.
      Returns:
      this.
      See Also:
    • isCurrentNodeOnlyRecovery

      public boolean isCurrentNodeOnlyRecovery()
      Should the recovery process not recover XIDs generated with another JVM unique ID? Setting this property to true is useful in clustered environments where multiple instances of BTM are running on different nodes.
      Returns:
      true if recovery should filter out recovered XIDs that do not contain this JVM's unique ID, false otherwise.
      See Also:
    • setCurrentNodeOnlyRecovery

      public Configuration setCurrentNodeOnlyRecovery(boolean currentNodeOnlyRecovery)
      Set to true if recovery should filter out recovered XIDs that do not contain this JVM's unique ID, false otherwise.
      Parameters:
      currentNodeOnlyRecovery - true if recovery should filter out recovered XIDs that do not contain this JVM's unique ID, false otherwise.
      Returns:
      this.
      See Also:
    • isAllowMultipleLrc

      public boolean isAllowMultipleLrc()
      Should the transaction manager allow enlistment of multiple LRC resources in a single transaction? This is highly unsafe but could be useful for testing.
      Returns:
      true if the transaction manager should allow enlistment of multiple LRC resources in a single transaction, false otherwise.
    • setAllowMultipleLrc

      public Configuration setAllowMultipleLrc(boolean allowMultipleLrc)
      Set to true if the transaction manager should allow enlistment of multiple LRC resources in a single transaction.
      Parameters:
      allowMultipleLrc - true if the transaction manager should allow enlistment of multiple LRC resources in a single transaction, false otherwise.
      Returns:
      this
    • getResourceConfigurationFilename

      public String getResourceConfigurationFilename()
      ResourceLoader configuration file name. ResourceLoader will be disabled if this value is null.

      Property name:
      bitronix.tm.resource.configuration - (defaults to null)

      Returns:
      the filename of the resources configuration file or null if not configured.
    • setResourceConfigurationFilename

      public Configuration setResourceConfigurationFilename(String resourceConfigurationFilename)
      Set the ResourceLoader configuration file name.
      Parameters:
      resourceConfigurationFilename - the filename of the resources configuration file or null you do not want to use the ResourceLoader.
      Returns:
      this.
      See Also:
    • isDisableRecovery

      public boolean isDisableRecovery()
      Useful for debugging with less noise.
      Returns:
      whether recovery is disabled or not.
      Since:
      3.0
    • setDisableRecovery

      public Configuration setDisableRecovery(boolean disableRecovery)
      Useful for debugging with less noise.
      Parameters:
      disableRecovery - whether recovery is disabled or not.
      Returns:
      this.
      Since:
      3.0
    • buildServerIdArray

      public byte[] buildServerIdArray()
      Build the server ID byte array that will be prepended in generated UIDs. Once built, the value is cached for the duration of the JVM lifespan.
      Returns:
      the server ID.
    • shutdown

      public void shutdown()
      Description copied from interface: Service
      Shutdown the service and free all held resources.
      Specified by:
      shutdown in interface Service
    • toString

      public String toString()
      Overrides:
      toString in class Object