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

Schreibe einen Kommentar