Galerinha da pessada, passei por 2 fóruns e ninguem conseguiu me dar uma luz.
Estou tentando usar o prevayler, mas toh fazendo alguma coisa muuuito errada.
Eu toh usando a serialização em XML… enquanto eu rodo o meu programa eu vejo o XML aumentando de tamanho, trazendo + detalhes, vejo o garfo se expandindo como esperado. Quando fecho, vejo que tudo que não tinha sido gravado ainda vai pro HD. Mas, como tudo tem um mas… quando eu rodo o meu aplicativo denovo ele simplesmente perde tudo. Ele começa tudo do 0.
Eu fiz uma persistence factory que é a responsável por manter a thread que faz o snapshot e por inicializar o prevayler. O código está abaixo, se alguem puder me ajudar…
/*
* Created on 18/06/2005
*/
package br.com.orzare.persistence.toolmakerfactory;
import java.io.IOException;
import org.prevayler.Prevayler;
import org.prevayler.PrevaylerFactory;
import org.prevayler.implementation.snapshot.XStreamSnapshotManager;
import br.com.orzare.common.Logger;
import com.thoughtworks.xstream.XStream;
/**
* @author Marvin Herman Froeder
*/
public class PersistenceFactory {
private static class Snapshoter implements Runnable {
public void run() {
int errors = 0;
while (true && errors < 4) {
try {
Thread.sleep(1000 * 20);
prevayler.takeSnapshot();
Logger.info("Snapshot taken at " + new java.util.Date() + "...");
} catch (Exception e) {
errors++;
}
}
}
}
private static Prevayler prevayler;
private static Prevayler getPrevayler() {
try {
if (prevayler == null) {
PrevaylerFactory factory = new PrevaylerFactory();
factory.configureSnapshotManager(new XStreamSnapshotManager(
new ToolMakerFactory(), "base") {
protected XStream createXStream() {
XStream xstream = new XStream();
// faz o XML ficar identado.
xstream.alias("PrevaylerFactory", PrevaylerFactory.class);
return xstream;
}
});
prevayler = factory.create();
startSnapshots();
}
return prevayler;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
public static ToolMakerFactory getToolFacotry() {
return (ToolMakerFactory) getPrevayler().prevalentSystem();
}
public static void makeSnapshot() {
try {
PersistenceFactory.prevayler.takeSnapshot();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private static void startSnapshots() {
Thread t = new Thread(new Snapshoter());
t.start();
}
}
Eu já tentei usar a serialização normal, mas ocorre a mesma coisa, ao abrir o meu programa todos os dados são perdido.
Alguem já passou por esse problema? Não sei por onde sair.
VELO