Opa galera, beleza? Estou lendo o livro EJB in Action e pelo que entendi o livro fala que @Stateful o Bean carrega seu estado por um tempo para um determinado cliente.
e o @Stateless é usado por todos.
Mais o que o meu teste traz são dados totalmente ao crontário.
Fiz 2 testes com essa classe:
public class HelloObject implements HelloInterface{
private int count = 0;
public String validation(String login, String pass) {
count++;
if(login.equals("GabrielCardelli") && pass.equalsIgnoreCase("123456")){
return "logado" + count;
}
return "vetado" + count;
}
}
Teste com @Statefull
Cliente 1 (Browser do Eclipse)
23:13:49,498 INFO [STDOUT] logado1
23:13:49,500 INFO [STDOUT] logado2
23:13:49,502 INFO [STDOUT] logado1
23:13:49,503 INFO [STDOUT] logado2
Cliente 2 (Chrome)
23:13:57,433 INFO [STDOUT] logado1
23:13:57,435 INFO [STDOUT] logado2
Teste com @Stateless
Cliente 1 (Browser do Eclipse)
23:15:49,498 INFO [STDOUT] logado1
23:15:49,500 INFO [STDOUT] logado2
23:15:49,502 INFO [STDOUT] logado3
23:15:49,503 INFO [STDOUT] logado4
Cliente 2 (Chrome)
23:16:57,433 INFO [STDOUT] logado1
23:16:57,435 INFO [STDOUT] logado2
A Resposta não deveria ser algo do tipo:
Teste com @Statefull
Cliente 1 (Browser do Eclipse)
23:13:49,498 INFO [STDOUT] logado1
23:13:49,500 INFO [STDOUT] logado2
23:13:49,502 INFO [STDOUT] logado3
23:13:49,503 INFO [STDOUT] logado4
Cliente 2 (Chrome)
23:13:57,433 INFO [STDOUT] logado1
23:13:57,435 INFO [STDOUT] logado2
Teste com @Stateless
Cliente 1 (Browser do Eclipse)
23:15:49,498 INFO [STDOUT] logado1
23:15:49,500 INFO [STDOUT] logado2
23:15:49,502 INFO [STDOUT] logado3
23:15:49,503 INFO [STDOUT] logado4
Cliente 2 (Chrome)
23:16:57,433 INFO [STDOUT] logado5
23:16:57,435 INFO [STDOUT] logado6
Estou usado a seguinte classe para teste:
public class Validation {
public void ValidarUsuario(String nome, String senha) {
HelloLocator hl = new HelloLocator();
HelloInterface hi = null;
try {
hi = (HelloInterface) new InitialContext().lookup("HelloObject/local");
String result = hi.validation("GabrielCardelli","123456");
System.out.println(result);
result = hi.validation("GabrielCardelli","123456");
System.out.println(result);
hi = (HelloInterface) new InitialContext().lookup("HelloObject/local");
result = hi.validation("GabrielCardelli","123456");
System.out.println(result);
result = hi.validation("GabrielCardelli","123456");
System.out.println(result);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Alguem poderia me explicar algo sobre isso?Fiquei confuso agora, me parece que o livro está explicando errado.
Abraço, Obrigado;.