bitronix.tm
Class Configuration

java.lang.Object
  extended by 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 Summary
protected Configuration()
           
 
Method Summary
 byte[] buildServerIdArray()
          Build the server ID byte array that will be prepended in generated UIDs.
 int getBackgroundRecoveryInterval()
          Deprecated. superceded by #getBackgroundRecoveryIntervalSeconds().
 int getBackgroundRecoveryIntervalSeconds()
          Interval in seconds at which to run the recovery process in the background.
 int getDefaultTransactionTimeout()
          Default transaction timeout in seconds.
 int getGracefulShutdownInterval()
          Maximum amount of seconds the TM will wait for transactions to get done before aborting them at shutdown time.
 String getJndiTransactionSynchronizationRegistryName()
          Get the name the TransactionSynchronizationRegistry should be bound under in the BitronixContext.
 String getJndiUserTransactionName()
          Get the name the UserTransaction should be bound under in the BitronixContext.
 String getJournal()
          Get the journal implementation.
 String getLogPart1Filename()
          Get the journal fragment file 1 name.
 String getLogPart2Filename()
          Get the journal fragment file 2 name.
 int getMaxLogSizeInMb()
          Maximum size in megabytes of the journal fragments.
 String getResourceConfigurationFilename()
          ResourceLoader configuration file name.
 String getServerId()
          ASCII ID that must uniquely identify this TM instance.
 boolean isAllowMultipleLrc()
          Should the transaction manager allow enlistment of multiple LRC resources in a single transaction?
 boolean isAsynchronous2Pc()
          Should two phase commit be executed asynchronously?
 boolean isCurrentNodeOnlyRecovery()
          Should the recovery process not recover XIDs generated with another JVM unique ID?
 boolean isDisableJmx()
          Should JMX Mbeans not be registered even if a JMX MBean server is detected?
 boolean isFilterLogStatus()
          Should only mandatory logs be written?
 boolean isForceBatchingEnabled()
          Are disk forces batched?
 boolean isForcedWriteEnabled()
          Are logs forced to disk?
 boolean isSkipCorruptedLogs()
          Should corrupted logs be skipped?
 boolean isWarnAboutZeroResourceTransaction()
          Should transactions executed without a single enlisted resource result in a warning or not?
 Configuration setAllowMultipleLrc(boolean allowMultipleLrc)
          Set to true if the transaction manager should allow enlistment of multiple LRC resources in a single transaction.
 Configuration setAsynchronous2Pc(boolean asynchronous2Pc)
          Set if two phase commit should be executed asynchronously.
 Configuration setBackgroundRecoveryInterval(int backgroundRecoveryInterval)
          Deprecated. superceded by #setBackgroundRecoveryIntervalSeconds(int).
 Configuration setBackgroundRecoveryIntervalSeconds(int backgroundRecoveryIntervalSeconds)
          Set the interval in seconds at which to run the recovery process in the background.
 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.
 Configuration setDefaultTransactionTimeout(int defaultTransactionTimeout)
          Set the default transaction timeout in seconds.
 Configuration setDisableJmx(boolean disableJmx)
          Set to true if JMX Mbeans should not be registered even if a JMX MBean server is detected.
 Configuration setFilterLogStatus(boolean filterLogStatus)
          Set if only mandatory logs should be written.
 Configuration setForceBatchingEnabled(boolean forceBatchingEnabled)
          Set if disk forces are batched.
 Configuration setForcedWriteEnabled(boolean forcedWriteEnabled)
          Set if logs are forced to disk.
 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.
 Configuration setJndiTransactionSynchronizationRegistryName(String jndiTransactionSynchronizationRegistryName)
          Set the name the TransactionSynchronizationRegistry should be bound under in the BitronixContext.
 Configuration setJndiUserTransactionName(String jndiUserTransactionName)
          Set the name the UserTransaction should be bound under in the BitronixContext.
 Configuration setJournal(String journal)
          Set the journal name.
 Configuration setLogPart1Filename(String logPart1Filename)
          Set the journal fragment file 1 name.
 Configuration setLogPart2Filename(String logPart2Filename)
          Set the journal fragment file 2 name.
 Configuration setMaxLogSizeInMb(int maxLogSizeInMb)
          Set the Maximum size in megabytes of the journal fragments.
 Configuration setResourceConfigurationFilename(String resourceConfigurationFilename)
          Set the ResourceLoader configuration file name.
 Configuration setServerId(String serverId)
          Set the ASCII ID that must uniquely identify this TM instance.
 Configuration setSkipCorruptedLogs(boolean skipCorruptedLogs)
          Set if corrupted logs should be skipped.
 Configuration setWarnAboutZeroResourceTransaction(boolean warnAboutZeroResourceTransaction)
          Set if transactions executed without a single enlisted resource should result in a warning or not.
 void shutdown()
          Shutdown the service and free all held resources.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Configuration

protected Configuration()
Method Detail

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:
getServerId()

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:
getLogPart1Filename()

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:
getLogPart2Filename()

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:
isForcedWriteEnabled()

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:
isForceBatchingEnabled()

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:
getMaxLogSizeInMb()

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:
isFilterLogStatus()

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:
isSkipCorruptedLogs()

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:
isAsynchronous2Pc()

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:
isWarnAboutZeroResourceTransaction()

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:
getDefaultTransactionTimeout()

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:
getGracefulShutdownInterval()

getBackgroundRecoveryInterval

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

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:
getBackgroundRecoveryInterval()

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:
getBackgroundRecoveryIntervalSeconds()

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:
isDisableJmx()

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:
getJndiUserTransactionName()

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:
getJndiUserTransactionName()

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:
getJournal()

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:
contains the value used as the JVM unique ID.

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:
isCurrentNodeOnlyRecovery()

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:
getResourceConfigurationFilename()

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


Copyright © 2006-2011 Bitronix Software. All Rights Reserved.