Package fr.dyade.aaa.util
Class NTransaction
- java.lang.Object
-
- fr.dyade.aaa.util.BaseTransaction
-
- fr.dyade.aaa.util.AbstractTransaction
-
- fr.dyade.aaa.util.NTransaction
-
- All Implemented Interfaces:
NTransactionMBean,Transaction,TransactionMBean
public final class NTransaction extends AbstractTransaction implements NTransactionMBean
The NTransaction class implements a transactional storage. For efficiency it uses a file for its transaction journal, the final storage is provided through the Repository interface on filesystem or database.Be Careful, the configuration properties don't work for the transaction component: these properties are saved in the transaction repository so they can not be used to configure it.
- See Also:
Transaction,Repository,FileRepository
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classNTransaction.GarbageTask(package private) static classNTransaction.LogFile-
Nested classes/interfaces inherited from class fr.dyade.aaa.util.AbstractTransaction
AbstractTransaction.Context
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static booleandebug(package private) NTransaction.LogFilelogFile(package private) static intLogMemoryCapacityGlobal in memory log initial capacity, by default 4096.(package private) static intLogThresholdOperationNumber of pooled operation, by default 1000.(package private) static intMaxLogFileSizeSize of disk log in Mb, by default 16Mb.(package private) static intMaxLogMemorySizeMaximum size of memory log, by default 2048Kb.(package private) Repositoryrepository(package private) StringrepositoryImplThe Repository classname implementation.(package private) booleansyncOnWriteIf true every write in the log file is synced to disk, by default false.private NTransaction.GarbageTasktaskprivate Timertimer-
Fields inherited from class fr.dyade.aaa.util.AbstractTransaction
average, dir, logmon, MONITOR, OOS_STREAM_HEADER, PERIODS, perThreadContext, phase, startTime
-
Fields inherited from class fr.dyade.aaa.util.BaseTransaction
DEBUG
-
-
Constructor Summary
Constructors Constructor Description NTransaction()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Stringbackup(String path)Backups the content of Transaction module.voidclose()Close the transaction module.voidcommit(boolean release)Commit the current transaction.voiddelete(String dirName, String name)Deletes the specified object.voidgarbage()Garbage the log file.voidgarbageAsync(boolean async)Sets asynchronous garbage.intgetCommitCount()Returns the number of commit operation since starting up.private byte[]getFromLog(String dirName, String name)private byte[]getFromLog(Hashtable log, Object key)intgetGarbageCount()Returns the number of garbage operation since starting up.intgetGarbageDelay()Returns the maximum time between two garbages, 0 if disable.intgetGarbageRatio()Returns the ratio of garbage operations since starting up.longgetGarbageTime()Returns the cumulated time of garbage operations since starting up.String[]getList(String prefix)Returns an array of strings naming the persistent objects denoted by a name that satisfy the specified prefix.intgetLogFileSize()Returns the size of disk log in Kb.intgetLogMemoryCapacity()Returns the initial capacity of global in memory log (by default 4096).intgetLogMemorySize()Returns the size of memory log in bytes.intgetLogThresholdOperation()Returns the pool size foroperationobjects, by default 1000.intgetMaxLogFileSize()Returns the maximum size of disk log in Mb, by default 16Mb.intgetMaxLogMemorySize()Returns the maximum size of memory log in Kb, by default 2048Kb.intgetNbBadDeletedObjects()Returns the number of useless delete operation on repository.intgetNbDeletedObjects()Returns the number of delete operation on repository.intgetNbLoadedObjects()Returns the number of load operation from repository.intgetNbSavedObjects()Returns the number of save operation to repository.StringgetPersistenceDir()Returns the path of persistence directory.StringgetRepositoryImpl()Returns the Repository classname implementation.voidinitRepository()booleanisGarbageRunning()Returns the status of the garbage thread.booleanisSyncOnWrite()Returns true if every write in the log file is synced to disk.byte[]loadByteArray(String dirName, String name)Load the specified byte array.static voidmain(String[] args)protected voidsaveInLog(byte[] buf, String dirName, String name, Hashtable log, boolean copy, boolean first)Save an object state already serialized.voidsetGarbageDelay(int timeout)Sets the maximum time between two garbages, 0 to disable the asynchronous garbage mechanism.voidsetMaxLogFileSize(int size)Sets the maximum size of disk log in Mb.voidsetMaxLogMemorySize(int size)Sets the maximum size of memory log in Kb.protected voidsetPhase(int newPhase)Changes the transaction state.voidstop()Stops the transaction module.StringtoString()Returns a string representation for this object.-
Methods inherited from class fr.dyade.aaa.util.AbstractTransaction
begin, containsOperations, create, create, createByteArray, createByteArray, delete, getAverageCommitTime, getOperationCount, getPhase, getPhaseInfo, getStartTime, init, isPersistent, load, load, loadAll, loadByteArray, loadFromByteArray, release, save, save, save, saveByteArray, saveByteArray, saveByteArray, useLoadAll
-
Methods inherited from class fr.dyade.aaa.util.BaseTransaction
dumpObjectList, freeze, getBoolean, getInteger, getInteger, getObject, getObjectList, getProperty, getProperty, loadProperties, saveProperties
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface fr.dyade.aaa.util.TransactionMBean
dumpObjectList, getObject, getObjectList, getPhase, getPhaseInfo, getStartTime, isPersistent, useLoadAll
-
-
-
-
Field Detail
-
LogMemoryCapacity
static int LogMemoryCapacity
Global in memory log initial capacity, by default 4096. This value can be adjusted for a particular server by settingNTLogMemoryCapacityspecific property.This property can be set only at first launching.
-
MaxLogMemorySize
static int MaxLogMemorySize
Maximum size of memory log, by default 2048Kb. This value can be adjusted (Kb) for a particular server by settingNTLogMemorySizespecific property.This property can be set only at first launching.
-
MaxLogFileSize
static int MaxLogFileSize
Size of disk log in Mb, by default 16Mb. This value can be adjusted (Mb) for a particular server by settingNTLogFileSizespecific property.This property can be set only at first launching.
-
syncOnWrite
boolean syncOnWrite
If true every write in the log file is synced to disk, by default false. This value can be adjusted for a particular server by settingTransaction.SyncOnWritespecific property.This property can be set only at first launching.
-
LogThresholdOperation
static int LogThresholdOperation
Number of pooled operation, by default 1000. This value can be adjusted for a particular server by settingNTLogThresholdOperationspecific property.This property can be set only at first launching.
-
timer
private Timer timer
-
task
private NTransaction.GarbageTask task
-
repositoryImpl
String repositoryImpl
The Repository classname implementation. This value can be set for a particular server by setting theNTRepositoryImplspecific property. By default its value is "fr.dyade.aaa.util.FileRepository".This property can be set only at first launching.
-
logFile
NTransaction.LogFile logFile
-
repository
Repository repository
-
debug
static final boolean debug
- See Also:
- Constant Field Values
-
-
Method Detail
-
getLogMemoryCapacity
public final int getLogMemoryCapacity()
Returns the initial capacity of global in memory log (by default 4096).- Specified by:
getLogMemoryCapacityin interfaceNTransactionMBean- Returns:
- The initial capacity of global in memory log.
-
getMaxLogMemorySize
public final int getMaxLogMemorySize()
Returns the maximum size of memory log in Kb, by default 2048Kb.- Specified by:
getMaxLogMemorySizein interfaceNTransactionMBean- Returns:
- The maximum size of memory log in Kb.
-
setMaxLogMemorySize
public final void setMaxLogMemorySize(int size)
Sets the maximum size of memory log in Kb.- Specified by:
setMaxLogMemorySizein interfaceNTransactionMBean- Parameters:
size- The maximum size of memory log in Kb.
-
getLogMemorySize
public final int getLogMemorySize()
Returns the size of memory log in bytes.- Specified by:
getLogMemorySizein interfaceNTransactionMBean- Returns:
- The size of memory log in bytes.
-
getMaxLogFileSize
public final int getMaxLogFileSize()
Returns the maximum size of disk log in Mb, by default 16Mb.- Specified by:
getMaxLogFileSizein interfaceNTransactionMBean- Returns:
- The maximum size of disk log in Mb.
-
setMaxLogFileSize
public final void setMaxLogFileSize(int size)
Sets the maximum size of disk log in Mb.- Specified by:
setMaxLogFileSizein interfaceNTransactionMBean- Parameters:
size- The maximum size of disk log in Mb.
-
getLogFileSize
public final int getLogFileSize()
Returns the size of disk log in Kb.- Specified by:
getLogFileSizein interfaceNTransactionMBean- Returns:
- The size of disk log in Kb.
-
isSyncOnWrite
public boolean isSyncOnWrite()
Description copied from interface:NTransactionMBeanReturns true if every write in the log file is synced to disk.- Specified by:
isSyncOnWritein interfaceNTransactionMBean- Returns:
- the syncOnWrite
-
getLogThresholdOperation
public final int getLogThresholdOperation()
Returns the pool size foroperationobjects, by default 1000.- Specified by:
getLogThresholdOperationin interfaceNTransactionMBean- Returns:
- The pool size for
operationobjects.
-
getCommitCount
public final int getCommitCount()
Returns the number of commit operation since starting up.- Specified by:
getCommitCountin interfaceTransaction- Specified by:
getCommitCountin interfaceTransactionMBean- Returns:
- The number of commit operation.
-
getGarbageCount
public final int getGarbageCount()
Returns the number of garbage operation since starting up.- Specified by:
getGarbageCountin interfaceNTransactionMBean- Returns:
- The number of garbage operation.
-
getGarbageDelay
public final int getGarbageDelay()
Returns the maximum time between two garbages, 0 if disable.- Specified by:
getGarbageDelayin interfaceNTransactionMBean- Returns:
- The maximum time between two garbages.
-
setGarbageDelay
public final void setGarbageDelay(int timeout)
Sets the maximum time between two garbages, 0 to disable the asynchronous garbage mechanism.- Specified by:
setGarbageDelayin interfaceNTransactionMBean- Parameters:
timeout- The maximum time between two garbages.
-
isGarbageRunning
public final boolean isGarbageRunning()
Returns the status of the garbage thread.- Specified by:
isGarbageRunningin interfaceNTransactionMBean- Returns:
- The status of the garbage thread.
-
garbageAsync
public void garbageAsync(boolean async)
Sets asynchronous garbage.- Specified by:
garbageAsyncin interfaceNTransactionMBean- Parameters:
async- If true activates the asynchronous garbage, deactivates otherwise.
-
getGarbageTime
public long getGarbageTime()
Returns the cumulated time of garbage operations since starting up.- Specified by:
getGarbageTimein interfaceNTransactionMBean- Returns:
- The cumulated time of garbage operations since starting up.
-
getGarbageRatio
public int getGarbageRatio()
Returns the ratio of garbage operations since starting up.- Specified by:
getGarbageRatioin interfaceNTransactionMBean- Returns:
- The ratio of garbage operations since starting up.
-
getRepositoryImpl
public String getRepositoryImpl()
Returns the Repository classname implementation.- Specified by:
getRepositoryImplin interfaceNTransactionMBean- Returns:
- The Repository classname implementation.
-
getNbSavedObjects
public int getNbSavedObjects()
Returns the number of save operation to repository.- Specified by:
getNbSavedObjectsin interfaceNTransactionMBean- Returns:
- The number of save operation to repository.
-
getNbDeletedObjects
public int getNbDeletedObjects()
Returns the number of delete operation on repository.- Specified by:
getNbDeletedObjectsin interfaceNTransactionMBean- Returns:
- The number of delete operation on repository.
-
getNbBadDeletedObjects
public int getNbBadDeletedObjects()
Returns the number of useless delete operation on repository.- Specified by:
getNbBadDeletedObjectsin interfaceNTransactionMBean- Returns:
- The number of useless delete operation on repository.
-
getNbLoadedObjects
public int getNbLoadedObjects()
Returns the number of load operation from repository.- Specified by:
getNbLoadedObjectsin interfaceNTransactionMBean- Returns:
- The number of load operation from repository.
-
initRepository
public final void initRepository() throws IOException- Specified by:
initRepositoryin classAbstractTransaction- Throws:
IOException
-
getPersistenceDir
public String getPersistenceDir()
Returns the path of persistence directory.- Returns:
- The path of persistence directory.
-
setPhase
protected final void setPhase(int newPhase)
Description copied from class:AbstractTransactionChanges the transaction state.- Specified by:
setPhasein classAbstractTransaction- Parameters:
newPhase- the new transaction state.
-
getList
public String[] getList(String prefix)
Returns an array of strings naming the persistent objects denoted by a name that satisfy the specified prefix. Each string is an object name.- Specified by:
getListin interfaceTransaction- Parameters:
prefix- the prefix- Returns:
- An array of strings naming the persistent objects denoted by a name that satisfy the specified prefix. The array will be empty if no names match.
-
saveInLog
protected final void saveInLog(byte[] buf, String dirName, String name, Hashtable log, boolean copy, boolean first) throws IOExceptionSave an object state already serialized. The byte array in parameter may be modified so we must duplicate it.- Specified by:
saveInLogin classAbstractTransaction- Parameters:
buf- the byte array containing the state of the object.dirName- the directory name of the object.name- the name of the object.log- the log to use.copy- the byte array can be modified, copy it.first- the object is a new one.- Throws:
IOException- an error occurs.
-
getFromLog
private final byte[] getFromLog(Hashtable log, Object key) throws IOException
- Throws:
IOException
-
getFromLog
private final byte[] getFromLog(String dirName, String name) throws IOException
- Throws:
IOException
-
loadByteArray
public byte[] loadByteArray(String dirName, String name) throws IOException
Description copied from interface:TransactionLoad the specified byte array.- Specified by:
loadByteArrayin interfaceTransaction- Parameters:
dirName- the directory name of the object.name- the name of the object.- Returns:
- the loaded byte array.
- Throws:
IOException- an error occurs.
-
delete
public final void delete(String dirName, String name)
Description copied from interface:TransactionDeletes the specified object.- Specified by:
deletein interfaceTransaction- Parameters:
dirName- the directory name of the object.name- the name of the object.
-
commit
public final void commit(boolean release) throws IOExceptionDescription copied from interface:TransactionCommit the current transaction.- Specified by:
commitin interfaceTransaction- Parameters:
release- if true releases the transaction at the end of the commit.- Throws:
IOException- an error occurs.
-
garbage
public final void garbage()
Garbage the log file. It waits all transactions termination, then the log file is garbaged and all operations are reported to disk.- Specified by:
garbagein interfaceNTransactionMBean
-
stop
public void stop()
Stops the transaction module. It waits all transactions termination, then the module is kept in a FREE 'ready to use' state. The log file is garbaged, all operations are reported to disk.- Specified by:
stopin interfaceTransaction
-
close
public void close()
Close the transaction module. It waits all transactions termination, the module will be initialized anew before reusing it. The log file is garbaged then closed.- Specified by:
closein interfaceTransaction
-
toString
public String toString()
Returns a string representation for this object.
-
backup
public String backup(String path) throws Exception
Backups the content of Transaction module. Produces a generic Backup/Restore file containing all living objects. Currently not implemented, throws an UnsupportedOperationException.- Specified by:
backupin interfaceTransaction- Specified by:
backupin interfaceTransactionMBean- Parameters:
path- Directory path to store the backup.- Returns:
- the name of created backup file.
- Throws:
Exception- An error occurs during backup.
-
-