Servlet mit eigenem Entity-Manager innerhalb von Seam-Projekt

JanHH

Top Contributor
Hallo,

bräuchte da mal Hilfe.. habe ein seam-Projekt, mit EJBs und JBoss, aber brauche nun innerhalb dieses Projektes ein zusätzliches Servlet (welches keinen Zugriff auf irgendwelche EJBs braucht, einfach ein stinknormales Servlet, was auf die Datenbank zugreift und Requests beantwortet). In diesem Servlet ist ebenfalls Zugriff auf die Datenbank per JPA (wie es bei seam so üblich ist, wird hibernate verwendet) notwendig, aber ich scheitere daran, einen EntityManager zu erzeugen. Ich dachte mir: Am einfachsten wäre es, wenn das Servlet eine eigene, vom Rest der Applikation unabhängige, EntityManagerFactory hat. Wenn ich jedoch als Persistence Unit für diese die gleiche wie für den Rest des Projekts verwendet, meckert hibernate

("javax.persistence.PersistenceException: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
").

Nun wäre es sicher klein Problem, eine zweite PU zu definieren, die auf die gleiche Datenbank zugreift. Aber dies wie gehabt zu tun durch entsprechende Einträge in der persistence.xml-Datei scheitert auch. Dann bekomme ich die Meldung

java.lang.RuntimeException: You have not defined a non-jta-data-source for a RESOURCE_LOCAL enabled persistence context named: pu2

Ich verstehe diese Meldungen zwar vage aber was ich nun tun muss damit es funktioniert ist mir unklar. Kann jemand helfen?

Gruß+Danke
Jan
 
M

maki

Gast
*neugier*

Hast du dir den JTA & die DS per JNDI geholt?
JBoss würde es auch unterstützen den EM gleich per JNDI zur Verfügung zu stellen wenn ich die DOku richtig deute, mit ein bisschen Konfiguration.
 

JanHH

Top Contributor
Für mich ist das alles relativ neu, bin da nicht so tief in der Materie drin.. hab erst versucht, per JNDI auf die EntityManagerFactory zuzugreifen, aber beim Versuch, den EntityManager zu benutzen, kam die Fehlermeldung

java.lang.IllegalStateException: JTA EntityManager cannot access a transactions

was mir durchaus plausibel erschien.

Zweiter Versuch: In der persistence.xml eine zweite PU definiert, für diese dann ganz konventionell mit Persitence.createEntityManagerFactory(...) selbige erzeugt. Dann kam der besagte Fehler mit der nicht definierten non-jta-datasource. Bei der ersten PU war die DataSource als <jta-data-source> angegeben, hab also einfach die gleiche DataSource bei der zweiten PU als <non-jta-data-source> hinzugefügt. Und siehe da, funktioniert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Vorgehen DB /Entity Data Tier 2
A Entity Manager Data Tier 4
erdmann Entity-Services ein Antipattern? Data Tier 3
S JPA Cascade: Entity nur speichern, wenn sie nicht schon existiert Data Tier 0
E JPA Session.delete einer Entity wird nicht ausgeführt Data Tier 2
G JPA: Entity Klasse @JoinColumns Problem Data Tier 2
G EJB NoSuchEJBException Zugriff auf Entity Data Tier 6
S [JPA-Neuling] - JPA 2 und dynamische Entity-Typen/DB-Schemata Data Tier 11
Landei JPA - Entity mit Maps Data Tier 2
H [Hibernate] Unknown Entity Data Tier 3
G JPA/ Eclipselink: (Alte) Kopie einer Entity? Data Tier 6
lumo Hibernate - entity class not found Data Tier 5
J synchronisierte Zugriffe auf die gleiche Entity (JPA) Data Tier 19
LCS Entity mit variablen Tabellennamen Data Tier 3
D jpq entity life cycle - insert, update... Data Tier 5
A @org.hibernate.annotations.Entity(dynamicUpdate=true, optimisticLock=OptimisticLockType.ALL) Data Tier 2
T [JPA] Update Entity in Entity Data Tier 2
byte Hibernate: Criteria & SubQuery - Unknown Entity null Data Tier 1
Final_Striker EJB3: Entity nach persist wiederfinden Data Tier 8
N Entity-Object muss auf Client aktualisiert werden Data Tier 13
0 org.hibernate.MappingException: Unknown entity Data Tier 8
K Hibernate: Unknown entity Data Tier 7

Ähnliche Java Themen


Oben