Heute morgen bekam ich beim Anmelden an meine Webanwendung die Fehlernachricht „Transaction is not active“. Ich habe nun ein Frage bezüglich meines Vorgehens zum Erzeugen des EntityManagerFactory-Exemplars, welches in diesem Fall nicht durch einen Container verwaltet wird.
In der contextInitialized-Methode des ServletContextListener wird das Objekt etwa so erzeugt:
Die Implementierung für contextDestroyed sieht ungefähr so aus:
Ich verwende Struts 2. Das EntityManagerFactory-Objekt wird mit Hilfe eines Interceptors an die jeweiligen Aktionsklassen geleitet.
Es ist meine erste Webanwendung, in der ich JPA verwende und wollte nun fragen, ob dieses Vorgehen so in Ordnung ist und was man vielleicht noch beachten sollte. Sonst muss ich warten, bis der Fehler wieder auftritt und verfolgen.
In der contextInitialized-Methode des ServletContextListener wird das Objekt etwa so erzeugt:
Code:
ServletContext context = event.getServletContext();
EntityManagerFactory emf = EntityManagerFactoryUtil.getEntityManagerFactory();
context.setAttribute(Konstanten.ENTITY_MANAGER_FACTORY, emf);
Die Implementierung für contextDestroyed sieht ungefähr so aus:
Code:
EntityManagerFactory emf = (EntityManagerFactory)context.getAttribute(Konstanten.ENTITY_MANAGER_FACTORY);
emf.close();
Ich verwende Struts 2. Das EntityManagerFactory-Objekt wird mit Hilfe eines Interceptors an die jeweiligen Aktionsklassen geleitet.
Es ist meine erste Webanwendung, in der ich JPA verwende und wollte nun fragen, ob dieses Vorgehen so in Ordnung ist und was man vielleicht noch beachten sollte. Sonst muss ich warten, bis der Fehler wieder auftritt und verfolgen.