Unterschied zwischen @Stateless und @Singleton
Bin ich nach dieses tutorial die auch verwendet eine EJB:
package exercise1;
import java.util.Random;
import javax.ejb.Stateless;
import javax.inject.Named;
@Stateless
public class MessageServerBean {
private int counter = 0;
public String getMessage(){
Random random = new Random();
random.nextInt(9999999);
int myRandomNumber = random.nextInt();
return "" + myRandomNumber;
}
public int getCounter(){
return counter++;
}
}
Hier ist ein Ausgabe-Beispiel:
Hallo von Facelets
Nachricht: 84804258
Zähler: 26
Message-Server-Bean: exercise1.MessageServerBean@757b6193
Hier ist meine Beobachtung:
- Wenn ich die Bohne als
@Stateless
ich bekomme immer die gleiche Objekt-ID und der Zähler immer in Schritten. - Wenn ich die Bohne als
@Stateful
bekomme ich eine neue Instanz jedes mal, wenn ich die Seite aktualisieren. - Wenn ich es zu
@Singleton
ich bekomme die gleichen Ergebnisse wie wenn ich es auf@Stateless
: gleiche Objekt-ID, Zähler Inkrementieren.
So, was ich eigentlich möchte, zu verstehen ist: was ist der Unterschied zwischen @Stateless
und @Singleton
EJBs in diesem Fall?
InformationsquelleAutor der Frage godzillante | 2013-01-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen Sie die gleiche Ausgabe, weil es ist nur ein client Zugriff auf die EJB zu einer Zeit. Der application server ist in der Lage, um das Recycling der gleichen stateless EJB-Objekt für jeden Aufruf. Wenn Sie versuchen, eine gleichzeitige Zugriff mehrere clients zur gleichen Zeit - Sie werden sehen, neue zustandslosen Instanzen erscheinen.
Beachten Sie, dass abhängig von dem server laden, sogar zwei aufeinander folgende Methodenaufrufe, die von den gleichen client bis Ende Mai in verschiedenen stateless EJB-Objekte!
Für eine singleton-EJB, wird es keinen Unterschied – es ist immer nur eine Instanz pro Anwendung, egal wie viele clients versuchen, darauf zuzugreifen.
InformationsquelleAutor der Antwort gcvt
Entsprechend der Oracle-Dokumentation:
Singletons kann nicht passiviert werden:
In der Dokumentation erklärt jede Art von Bohne und Singleton-beans hat den folgenden:
Also für dein Beispiel gibt es keinen Unterschied zwischen den beiden Anmerkungen.
InformationsquelleAutor der Antwort kauedg