Stateless Session Beans gegen Singleton Session Beans

Den Java EE 6 Tutorial sagt:

Um die Leistung zu verbessern, könnten Sie ein stateless session bean, wenn es eines dieser Merkmale:

  • Den bean-Zustand-hat keine Daten für einen bestimmten client.
  • In einem einzigen Methodenaufruf, der Bohne führt eine generische Aufgabe für alle Kunden. Zum Beispiel, können Sie eine zustandslose session-bean eine E-Mail senden, die bestätigt eine online-Bestellung.
  • Der bean implementiert einen web service.

Singleton session beans sind in den entsprechenden folgenden Umständen:

  • Staat muss geteilt werden, die in der gesamten Anwendung.
  • Einer einzigen enterprise-bean zugegriffen werden muss von mehreren threads gleichzeitig genutzt werden.
  • Muss die Anwendung eine enterprise-bean, um Aufgaben, die auf Anwendung starten und Herunterfahren.
  • Der bean implementiert einen web service.

Aber was zu verwenden, wenn:

  • kein Staat muss geteilt werden, die über die Anwendung
  • einer einzigen enterprise-bean zugegriffen werden konnte, die von mehreren threads gleichzeitig
  • keine tasks auf Systemstart oder shotdown durchgeführt werden müssen

Sagen, ich habe zum Beispiel ein login-service mit folgender Schnittstelle:

public interface LoginService {
  boolean authenticate(String user, String password);
}

Sollte es werden annotiert mit @Singleton oder @Stateless? Was sind die Vorteile des einen und des anderen? Was ist, wenn LoginService muss man injiziert ein EntityManager (das wäre gleichzeitig verwendet werden)?

Zusatz: ich denke über die Java EE-Pendant des Frühlings-service-Bohnen, die zustandslos sind singletons. Wenn ich verstehe richtig, dass die Java EE-Pendant sind die @Stateless-session-beans und @Singleton-Beans werden verwendet, um zu konfigurieren Sie die Anwendung beim Start oder Aufräumarbeiten beim beenden oder zu halten Sie Anwendung große Objekte. Ist das richtig?

InformationsquelleAutor der Frage deamon | 2010-01-06

Schreibe einen Kommentar