Boa tarde!
Estou tentando utilizar um ejb local mas não obtive sucesso.
Quando vou utilizar no método testar() do MB recebo um nullpointer.
managed bean:
import interfaces.Teste;
import javax.ejb.EJB;
import javax.faces.event.ActionEvent;
public class TesteMB
{
@EJB(name = "testeEJB", beanName = "testeEJB")
private Teste teste;
private String valorTeste;
public String getValorTeste()
{
return valorTeste;
}
public void testar(ActionEvent event)
{
this.valorTeste = this.teste.teste();
}
}
EJB:
package ejb;
import interfaces.Teste;
import javax.ejb.Local;
import javax.ejb.Stateless;
@Local(value = Teste.class)
@Stateless(name = "testeEJB", mappedName = "testeEJB")
public class TesteBean implements Teste
{
@Override
public String teste()
{
return "Funcionou";
}
}
Interface local:
package interfaces;
public interface Teste
{
String teste();
}
Acabei criando uma servlet de teste e funciona:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 Teste extends HttpServlet
{
@EJB(name = "testeEJB", beanName = "testeEJB")
interfaces.Teste teste;
/****/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException
{
PrintWriter pw = arg1.getWriter();
pw.println("<HTML>");
pw.println("<TITLE>Olá Mundo!</TITLE>");
pw.println("<BODY>");
pw.println("Olá Web!");
pw.println("<B>" + this.teste.teste() + "</B>");
pw.println("</BODY>");
pw.println("</HTML>");
pw.flush();
}
}
Empacoto tudo num EAR e faço deploy no weblogic, se uso a servlet funciona mas se uso o projeto jsf não.
Não entendo o pq de não funciona, alguma idéia?
Obrigado.