Grundlegende Frage zu DepInj in Java EE

funkywon

Mitglied
hallo leute...
also...irgendwie ist das ganze sehr verwirrend und ich bräuchte hier ein wenig aufklärung, bin mir sicher, dass mir einige von den profis unter euch helfen können :)

Ich habe eine Webapp mit PersistenceUnit und einer JTA data source..
die wird auf Glassfish deployed..
Sollte ich jetzt theoretisch in einer NICHT-EJB den PersistenceContext per Annotation (@PersistenceContext) injizieren können? Bei mir gings nicht und bin mir nicht sicher, ob das jetzt eh so gehört, oder doch möglich sein sollte.
Da es also nicht ging, habe ich das ganze mit manuell (Persistence.createEntityManagerFactory("web-jpaPU")) gelöst.

Ist es dann so, dass JTA NUR in EJBs möglich ist? Oder in jeder Klasse, die im war-file auf dem AppSrv deployed wird?

Also da da mit JTA nicht hingehaun hat, hab ichs per manueller Transaktion versucht.
@Resource private UserTransaction utx; ging auch nicht und habs dann per entityManager.getTransaction().begin(); versucht, wo ich eine NullpointerException bekommen habe...

bin jetzt also leicht verwirrt.. ;(
in welchem Komponenten/Klassen kann man denn nun was anwenden? Danke schonmal für eure Hilfe!!
 

megaflop

Mitglied
Du solltest beachten, das Dependency Injection nur in vom Container verwalteten Objekten möglich ist. Wenn du deine Klassen mit den Annotationen für DI selbst instanziiert (das schließe ich aus der auftretenden NullPointerException), kümmert sich niemand um die Injektion. Diese Annotationen sind nur Anweisungen an den Bean Container.

JTA würde ich nur aus EJB's herraus benutzen - wegen der nur hier vorhandenen Unterstützung für Transaktionen.

Grüße, Jonas
 

Ähnliche Java Themen

Neue Themen


Oben