FilePersistenceInvalidClassException,
FilePersistenceNotSerializableException,
FilePersistenceClassNotFoundException,
FilePersistenceDataCorruptedException, FileIOException,
IOException, FilePersistenceTooBigForSerializationException {
final FilePersistenceBuilder builder = new FilePersistenceBuilder();
builder.setFileAccessMode(EnumFileAccessMode.MAPPED_RANDOM_FILE_ACCESS);
builder.setMaxBufferSize(8 * 1024);
builder.setMaxNumberOfBuffer(32);
builder.setPathName(path.getPath());
builder.setProxyMode(true);
builder.setRemoveFiles(false);
builder.setGarbageManagement(false);
builder.setCrashSafeMode(false);
builder.setMaxFileOperationRetry(4);
builder.setFileOperationRetryMsDelay(5000);
final File file = new File(path, "store.data");
HELPER_FILE_UTIL.touchFile(file, 1, 0);
final RandomAccessFile randomAccessFile = new RandomAccessFile(file,
"rws");
final FileLock lock = randomAccessFile.getChannel().tryLock();
assertNotNull("must lock", lock);
final int unLockDelay = 10000;
final Timer timer = new Timer(true);
try {
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
lock.release();
} catch (final IOException e) {// NOPMD ignore error
}
try {
randomAccessFile.close();
} catch (final IOException e) {// NOPMD ignore error
}
}
}, unLockDelay);
filePersistence = builder.build();
final IDataAccessSession session = filePersistence
.createDataAccessSession();
session.open();
session.setObject(KEY, new Object());
session.close(EnumFilePersistenceCloseAction.SAVE);