Anotação @EJB em um Servlet

Pessoal , li alguns artigos sobre EJB3 e pela especificação informa que deve trabalhar em qualquer c omponente que seja registrado com o JavaEE container
Sendo assim , deverá funcionar em uma servlet

No entanto estou há algumas horas tentando fazer funcionar em uma servlet, e nada.

Estou usando Jboss 4.2, sei que no Jboss temos que diponibilizar os componentes explicitamente na arvore jndi para que possamos usufruir a anotação @EJB.

Bem consegui acessar o meu EJB usando JSF, funcionou normalmente

	@EJB(name="ejb_in_action_cap02_EAR/PerfilSessionFacadeImpl/local") 
	private PerfilSessionFacade perfilSessionFacade;
        
        private Perfil perfil = new Perfil();

	public String create() {
    	try {
    		System.out.println("Perfil " + perfil.getPerfil());
    		perfilSessionFacade.salvarPerfil(perfil);
                ...

No entanto se eu usar essa mesma anotação em uma servlet , nao funciona, dá o erro exatamente na chamada ao bean.

Alguém sabe porque isso acontece ?

Marco Aurélio

Só acrescentando , o erro que dá é NullPointerException , significando que o container nao entrou na ação para injetar a o bean.

O deploy está sendo realizado na mesma instância do Jboss, aonde está localizado o bean?

O Bean é remoto ou local?

Um grande abraço.

A interface é local

@Local
public interface PerfilSessionFacade {

	public void salvarPerfil ( Perfil perfil);
}

A implementação é essa

@Stateless
public class PerfilSessionFacadeImpl implements PerfilSessionFacade {
	@PersistenceContext(unitName="pu_ejb_in_action_cap02_JPA")
  	private EntityManager manager;

	@Override
	public void salvarPerfil(Perfil perfil) {
		manager.persist(perfil);
		
	}
	

}

Este é o entity

@Entity
public class Perfil  implements Serializable{
	private static final long serialVersionUID = 1L;

	@Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="perf_id")
	private int id;
    
    @Column(name="perf_de_perfil", length=50)
    private String perfil;

Mas só lembro que no JSF está funcionando numa boa , mas no servlet está emperrando.

Marco Aurélio

Da uma pesquisada aqui no fórum, isso já foi debatido, inclusive citando quais servidores de aplicação seguem a especificação para esse caso, ou seja, se vai injetar seu EJB na Servlet com a anotação em questão…