Je travaille sur un projet java distribué qui utilise le framework AKKA et s'exécute sur un serveur dropwizard. Je crée une session au démarrage de l'application et l'utilisation de cette session à travers tous mes acteurs de la manière suivanteManière correcte de tuer une session dans un système distribué
MyApplication.java
public void run() {
final Session actorSession = hibernate.getSessionFactory()
.openSession();
// pass this session to various actors
final ActorSystem system = ActorSystem.create("myActorSystem");
environment.lifecycle().manage(new ActorSystemGuardian(system));
system.registerOnTermination(new Runnable() {
public void run() {
//Clean all resources after actor termination
actorSession.close();
}
ActorSystemGuardan.java
public class ActorSystemGuardian implements Managed {
private ActorSystem system;
public ActorSystemManager(ActorSystem system) {
this.system = system;
}
public void start() throws Exception {
}
public void stop() throws Exception {
system.shutdown();
}
}
Est-ce Cela assure-t-il le bon nettoyage de toutes les ressources? L'acteur sera-t-il fermé? Tous les acteurs doivent utiliser la même session tout au long de la vie de l'application. Y a-t-il un moyen de rendre cette session persistante?