Ich benutze Spiel-Framework und JPA. Nur wenige Nachrichten werden an die Akka Actors zur asynchronen Verarbeitung übergeben. Im Async-Prozess muss ich meine Datenbank über JPA verbinden.Wie verbinde ich mich mit Play Persistence (JPA) in Akka-Darstellern?
public class OrderCreation extends UntypedActor {
private EntityManagerFactory emFact = null;
private ActorSelection provisioner;
@Transactional(readOnly = false)
@Override
public void onReceive(Object order) throws Exception {
//HERE I need to do JPA related transactions
}
@Override
public void postStop() throws Exception {
}
@Override
public void preStart() throws Exception {
provisioner =getContext().actorSelection("/user/OrderProvisioner");
emFact = Persistence.createEntityManagerFactory("test-data-play");
}
}
bekam ich diesen Fehler
[akka://application/user/OrderCreation] No EntityManager bound to this thread. Try wrapping this call in JPA.withTransaction, or ensure that the HTTP context is setup on this thread.
java.lang.RuntimeException: No EntityManager bound to this thread. Try wrapping this call in JPA.withTransaction, or ensure that the HTTP context is setup on this thread.
at play.db.jpa.JPA.em(JPA.java:58)
Jeder hat eine Idee JPA durch Akka zu verbinden?
JPA und akka haben nichts miteinander zu tun. Ich würde die onReceive-Methode nicht kommentieren und um Ärger bitten. – Snickers3192
Ich löste das mit JPA.withTransaction, genau wie die Fehlermeldung sagt – kopelitsa