Olá a todos,
Estou desenvolvendo uma aplicação de teste utilizando EJB 3 no Glassfish, porém esbarrei em uma pequeno problema.
Eu criei um bean stateful:
[code]package sampleear;
import javax.ejb.Remove;
import javax.ejb.Stateful;
@Stateful
public class MyStatefulSessionBean implements StatefulBusinessInterface {
private String nome;
public void setNome(String nome) {
this.nome = nome;
}
@Remove
public String getNome() {
return nome;
}
}
[/code]
Seto os dados dele em um servlet:
[code]package sampleear;
import java.io.IOException;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
StatefulBusinessInterface full;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
if (name == null || name.length() == 0) {
name = "anonymous";
}
full.setNome(name);
response.getWriter().write("<a >Quem está logado?</a>");
}
}
[/code]
E tento pegar o valor dele em outro servlet:
[code]package sampleear;
import java.io.IOException;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Logged extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
StatefulBusinessInterface full;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("Usuário logado: " + full.getNome());
response.getWriter().write("<br />\n<a >voltar</a>");
}
}[/code]
Porém eu recebo a mensagem “Usuário logado: null”… já testei pra ver se o parâmetro name estava errado, mas não.
Acredito que o container está injetando uma nova instância do bean ao invés de utilizar a que tinha sido criada no outro servlet… como resolver isso?