これも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++;
}
}
出力例を次に示します。
Faceletsからのこんにちは
メッセージは:84804258
カウンターは:26
メッセージサーバーBeanは:exercise1.MessageServerBean@757b6193
これが私の観察です:
- Beanを設定すると、
@Stateless
常に同じオブジェクトIDが取得され、カウンターは常に増加します。 @Stateful
ページを更新するたびに新しいインスタンスを取得するときにBeanを設定すると。- に設定すると、同じオブジェクトID、カウンターインクリメント
@Singleton
に設定した場合と同じ結果が得られます。@Stateless
@Stateless
したがって、私が実際に理解したいのは、この場合のと@Singleton
EJBの違いは何ですか?