Bir fonksiyon içinde belirli işlemler yaptıktan sonra bir thread çalıştırıyorum. Bu thread içinde veritabanına birşeyler yazmaya çalıştığım zaman hata alıyorum.
Aldığım hata ve kodum aşağıda. Böyle bir sorun ile karşılaşan oldumu
INFO: javax.persistence.TransactionRequiredException
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTxRequiredCheck(EntityManagerWrapper.java:152)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTransactionScopedTxCheck(EntityManagerWrapper.java:134)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:252)
at com.nodeser.document.session.CfsDocumentFacade$1.run(CfsDocumentFacade.java:124)
final CfsVersion cfsVersion = new CfsVersion();
cfsVersion.setDrcDirectory(cfsDirectory);
cfsVersion.setDverCreatetime(new NodeDate());
cfsVersion.setDverCreator(entity.getModifier());
cfsVersion.setDverCreatorip(entity.getModifierip());
cfsVersion.setDverDocument(entity);
cfsVersion.setDverType(new CfsLkpVersiontype(versionType.getVTP_Id()));
cfsVersion.setDverFile(createFileName(entity, entity.getDocVersionList().size()));
final File targetFile = new File(cfsDirectory.getDrcPath() + cfsVersion.getDverFile());
getEntityManager().persist(cfsVersion);
Thread myThread = new Thread() {
@Override
public void run() {
System.out.println("Copy Has Started");
try {
copyfile(sourceFile, targetFile);
cfsVersion.setDverFnishtime(new NodeDate());
cfsVersion.setDverSuccess(true);
System.out.println("Copy Fnished");
} catch (Exception ex) {
cfsVersion.setDverFnishtime(new NodeDate());
cfsVersion.setDverSuccess(false);
cfsVersion.setDverError(ex.getMessage() + " - " + ex.getCause());
System.out.println("Copy Error : " + ex.getMessage());
} finally {
try {
getEntityManager().persist(cfsVersion);
} catch (Exception e) {
System.out.println(e);
}
}
if (cfsVersion.getDverSuccess()) {
//FLV Convert
}
}
};
myThread.start();
The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com
|