Ich habe einen Tomcat mit EclipseLink am laufen. Die Konfiguration ist angelehnt an diese hier.
Die Sache mit den ConnectionPool usw. läuft alles supie. Was mir noch unklar ist.
1)
Ich hole mir eine EntityManagerFactory und mit dieser erstelle ich meine EntityManager. Da das Besorgen der Factory "teuer" ist (habe ich jedenfalls gelesen), habe ich diese Instanz der Factory in ein Singleton gegeben. Jetzt habe ich aber auch gelesen, das man diese Instanz nur solange am Leben lassen soll wie der Zugriff auf den PersistenceContext dauert und dann mit EntityManagerFactory.close() die Factory entsorgen muss. Das widerspricht aber meiner Idee mit den Singleton...Irgendwie verwirrt mich das Ganze, kann mir mal einer mit ein paar kurzen Worten erklären, wie das grundsaätzlich Arbeiten in einer Java-SE-Umgebung aussehen sollte? Ich finde immer nur Sachen die sich an JavaEE anlehnen...aber defacto Tomcat ist JavaSE mit einigen Teilen von JavaEE (Servlet-API, JSTL, Java EL 1.0,...)
2)
ich benutzt JTA für die DB-Connection. Aber ich habe derzeit kein JTA (z.B. Bitronix, BTM, JOTM oder ähnliches) installiert. Bedeutet das der Aufruf von
manager.getTransaction().beginn();
keine Transaction auslöst? Muss ich dann auf jeden Fall noch einen JTA Manager (UserTransaction) installieren oder reicht es den Typ auf RESOURCE_LOCAL stellen und eine non-JTA-DataSource zu nehmen? Kurz gesagt ich brauche unbedingt eine sichere Transactionsteuerung beim Zugriff auf die DB und mit welcher Einstellung erreiche ich das?
Zum Schluss noch ein paar Fragen zu JTA:
Wann ist der Einsatz von JTA sinnvoll?
Was sind die Vorteile bzw. die Nachteile von JTA?
Wie ich zum Beispiel Bitronix oder JOTM in Tomcat zum laufen bekomme ist kein Problem, aber wie kann ich dann EclipseLink an Bitronix oder JOTM "anhängen"?
Die Sache mit den ConnectionPool usw. läuft alles supie. Was mir noch unklar ist.
1)
Ich hole mir eine EntityManagerFactory und mit dieser erstelle ich meine EntityManager. Da das Besorgen der Factory "teuer" ist (habe ich jedenfalls gelesen), habe ich diese Instanz der Factory in ein Singleton gegeben. Jetzt habe ich aber auch gelesen, das man diese Instanz nur solange am Leben lassen soll wie der Zugriff auf den PersistenceContext dauert und dann mit EntityManagerFactory.close() die Factory entsorgen muss. Das widerspricht aber meiner Idee mit den Singleton...Irgendwie verwirrt mich das Ganze, kann mir mal einer mit ein paar kurzen Worten erklären, wie das grundsaätzlich Arbeiten in einer Java-SE-Umgebung aussehen sollte? Ich finde immer nur Sachen die sich an JavaEE anlehnen...aber defacto Tomcat ist JavaSE mit einigen Teilen von JavaEE (Servlet-API, JSTL, Java EL 1.0,...)
2)
ich benutzt JTA für die DB-Connection. Aber ich habe derzeit kein JTA (z.B. Bitronix, BTM, JOTM oder ähnliches) installiert. Bedeutet das der Aufruf von
manager.getTransaction().beginn();
keine Transaction auslöst? Muss ich dann auf jeden Fall noch einen JTA Manager (UserTransaction) installieren oder reicht es den Typ auf RESOURCE_LOCAL stellen und eine non-JTA-DataSource zu nehmen? Kurz gesagt ich brauche unbedingt eine sichere Transactionsteuerung beim Zugriff auf die DB und mit welcher Einstellung erreiche ich das?
Zum Schluss noch ein paar Fragen zu JTA:
Wann ist der Einsatz von JTA sinnvoll?
Was sind die Vorteile bzw. die Nachteile von JTA?
Wie ich zum Beispiel Bitronix oder JOTM in Tomcat zum laufen bekomme ist kein Problem, aber wie kann ich dann EclipseLink an Bitronix oder JOTM "anhängen"?