case where setup is in
resource
joafip.properties:
IFilePersistence
filePersistence=new FilePersistence("joafip.properties",false);
joafip.path=<directory
path
where store files>
joafip.fileAccessMode=<file access mode>
joafip.numberOfFileBuffer=<number of mapped buffer for mapped mode>
joafip.fileBufferSize=<mapped buffer size>
joafip.dataFileName=<file name>
joafip.backupDataFileName=<file name>
joafip.stateOkFlagFileName=<file name>
joafip.stateBackupOkFlagFileName=<file name>
joafip.globalStateFlagFileName=<file name>
joafip.maxFileOperationRetry=<value starting from 1>
joafip.fileOperationRetryMsDelay=<value from 0>
joafip.noMoreDataAction=<action identifier>, where <action idention> is one of the below values:
joafip.dataModelIdentifier=<identifier
number, 1 by default>
joafip.dataModelConvertionDefFile=<conversion
definition file name>
joafip.garbageManagement=enabled
or disabled
joafip.proxyMode=enabled (default
that should be used) or disabled (usefull for tests
purposes)
joafip.crashSafeMode=enabled or disabled
(default)
have to choose between security and speed
joafip.fileCache=enabled or disabled (default)
enabled is
better for performances, better with greatest number of page as
possible.
joafip.fileCache.pageSize=<page
size ( number of byte ), must be greater or equals to
1024>
joafip.fileCache.maxPage=<maximum number of
page for read cache>
joafip.maintainedInMemory=enabled or disabled (default)
joafip.maintainedInMemoryQuota=<positive or null integer value>
max number of object maintened in memory when object maintained in memory is enabled
joafip.autoSave=enabled or disabled (default)
joafip.maxInMemoryThreshold=<positive or null integer value>
number of object in memory threshold to trigger auto save when enabled
joafip.zipCompressionLevel=<value from 0 thru 9>
0 no
compression
1 best speed (default)
....
9 best compression
joafip.substitutionOfJavaUtilCollection=enabled
or disabled (default)
the
java.util substitution
it is encouraged to use Joafip
collections implementation ( best for persistence efficiency )
joafip.substitute.<to
substitute class name>=<substitute
class
name>,<synchronizer class name>
set the class to substitute to an other class: after storing an object of class to substitute, an object of substitute class instance will be get at reading. The origiinal and subsititude class must have the same interface. The synchronizer is to copy state of "to substitute" object to substitute object.
joafip.storeMode.<path class name>=<mode>
path class
name:
full class
name or package name to apply to all classes in the package
mode:
notUseStandardSerialization
even if class is implement serializable or externalizable will use joafip mechanism instead of standard serialization. In joafip mode there is one object by data record, not all the object graph is not serialized in the same data record.
serializeInOneRecord
the object graph will be serialized in one record ( for more informations ).
serializeAndGZippedInOneRecord
the object graph will be serialized in one record in gzip compressed form.
serializeAndZippedInOneRecord
the object graph will be serialized in one record in zip compressed form, the compression level can be set.
notLazy
the instance of the class will not be enhanced by proxy, when read the object itself will be created with its state set. Useful for class than can not be enhanced.
storable
the instance of the class are storable
joafip.notStorable.<path class name>=enabled or disabled (default)
joafip.deprecatedInStore.<path class name>=enabled or disabled (default)
joafip.storeOnlyMarkedStorable=enabled or disabled (default)
joafip.forceEnhance.<path class name>=enabled or disabled (default)
Use to force proxy enhancement of a class even if class have "public final" method, take care when using this feature because a call to "public final" method of proxied class will not make the proxy load the object state.
joafip.objectIO.<class name>=<object input class name> <object output class name>
For expert, for really extreme case. Need to have knowledge of joafip internal object I/O mechanisms.
joafip.backgroundGarbageSweep=
disabled (default) or sleep time in
millisecond if
enabled
joafip.interceptMethodEnd.<class name>=<method name> , <return type descriptor> ( , <params type descriptor> ) +
see descriptor
joafip.storedStatic.<class name>=enabled or disabled (default)