Guice-Persist: กำลังพยายามดำเนินการกับ EntityManager ที่ปิดอยู่

ฉันมีแอปที่จัดการโดย maven โดยมีสองโมดูล: หนึ่งโมดูลสำหรับการคงอยู่ และอีกโมดูลสำหรับ webapp เอง (gwt)

การทดสอบของฉันในโมดูลการคงอยู่ทำงานได้อย่างมีเสน่ห์ แต่ใน webapp เมื่อฉันดำเนินการด้วยวิธีเดียวกันหลายครั้ง ฉันได้ java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManager.

ฉันใช้ guice-persist เพื่อแทรกตัวจัดการเอนทิตีลงใน DAO ของฉัน และวิธีการ DAO ทั้งหมดของฉันมีคำอธิบายประกอบ @Transactional

ใน webapp ของฉัน ฉันใส่: scuvServletModule คลาสสาธารณะขยาย ServletModule {

    @Override
    protected void configureServlets() {
       super.configureServlets();
       install(MyPersistenceAPI.getModule()); // return my module and install it
       filter("/*").through(PersistFilter.class);
       /// another bindings...
    }
}

ถ้าฉันลบ PersistFilter ออก มันจะทำงานปกติ แต่จะสุ่มส่งข้อยกเว้น Transaction Closed หรืออะไรทำนองนั้น

ความช่วยเหลือใด ๆ ?


person caarlos0    schedule 03.05.2012    source แหล่งที่มา


คำตอบ (1)


ฉันพบปัญหา มันคือ PersistFilter เห็นได้ชัดว่ามันเป็นซิงเกิลตัน DAO ของฉันก็เป็นแบบซิงเกิลตันเช่นกัน แต่ EntityManager ไม่ใช่

ตอนนี้ฉันฉีด Provider<EntityManager> แทน EntityManager และมันก็ใช้งานได้ราวกับมีเสน่ห์

person caarlos0    schedule 07.05.2012