Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > Eclipselink Transaction Sorunu
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
27.03.2011-16:42 #74097
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 oldumuconfused

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





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
28.03.2011-00:08 #74098
ilk persist çalışıyor mu?
thread i kaldırıp ilk persisti commit oluyormu dene.






N/A
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
28.03.2011-00:13 #74099
kodunda thread vs.. kullanma. şu yaptığın şey daha sonra tonla bug çıkarır.
senin thradinin işlemi transaction ın bittikten sonra da çalışabilir.





N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
28.03.2011-00:42 #74100
orhan yazdi
 
kodunda thread vs.. kullanma. şu yaptığın şey daha sonra tonla bug çıkarır.
senin thradinin işlemi transaction ın bittikten sonra da çalışabilir.


Thread olmadan normal çalışıyor. Thread kullanmamın sebebi 20 gb a kadar videolari kopyalamam sonrada flv ye donusturmem gerekmesi. Bu sürede web arayuzunde kullanıcı beklemesin istedim biggrin





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
28.03.2011-08:25 #74101
o zaman usertransaction kullanman lazim.





N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
29.03.2011-15:22 #74106
orhan yazdi
 
o zaman usertransaction kullanman lazim.


Deniyorum ama garip gatalar alıp duruyorumbeat up

javax.naming.NameNotFoundException: Lookup of java:comp/UserTransaction not allowed for Container managed Transaction beans


Elinde örnek kod varmıconfused





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
29.03.2011-19:03 #74108
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class facadeClazz {

    @PersistenceContext(unitName = persistenceUnit)
    private EntityManager em;
    @Resource
    private UserTransaction utx;
}

Bu şekil oldubiggrin





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb