Eredetileg így lett elkezdve, és ha bárhol a kódban van egy konténer tranzakciókezelésre vonatkozó annotáció, akkor a többi nem működik, kivétel keletkezik. Nem találtunk megoldást a párhuzamos használatra, de ha lehet és valaki tudja hogyan kell ne tartsa magában. Akarjuk refaktorálni a kódot, de így hogy egyszerre kell elég nehéz időzíteni.
Egyébként a működés a következő. Van egy "A" been @ManagedBean(name = "A"), @ApplicationScoped, @Singleton annotációkkal.
Ebben van több metódus, az egyik @Schedule(hour = "*", minute = "*/15") annotációval megjelölve szóval ezt a GlassFish 15 percenként meghívja. (Lehet ez lesz a kulcs a problémához)
Ebben az időzített metódusban az osztály saját metódusai vannak hívva ahol a metódusokban van
EntityManager em = Persistence.createEntityManagerFactory(Constants.PERSISTENCE_UNIT_NAME).createEntityManager();
egy egy entitymanager példány és a metódus végén le is van zárva. A metódus valamilyen entitást mert em.merge().
Illetve van
IdsMB
bean amely szintén stateless szintén a fenti módon kér entitymanaer-t és le is van zárva.
Az az A osztályban példányosítva van és nem @Injectálva.
100-200 alkalommal fut meg ez az egész "folyamat" minden 15 percben. GF újraindítás az első időzített futtatásnál, 60-70 alkalommal jó, mind az IdsMB, min az A rendesen menti az adatokat, de utána sem a IdsMB sem az A osztály nem menti az adatokat az adatbázisba