JBOSS 6 não está injetando os EJB's

Tenho um projeto usando EJB3 e ao injetar os EJB’s no manage bean não dando null pointer:

@Named("testeMB")
@SessionScoped
public class TesteMB extends AbstractMB implements Serializable {

    private static final long serialVersionUID = 1520297637271783756L;
    @EJB
    private CursoEJB ejb;

EJB:

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
public class CursoEJB extends AbstractEJB {

Ocorre o null pointer qdo o jboss está subindo, ou seja, não conseguiu localizar o ejb, alguém sabe o que pode ser?

seu ejb é 3.0 certo? até por que no jboss 6 você não vai ter ejb 3.1… sendo assim você precisa que o seu ejb implemente alguma interface que esteja anotada com @Local ou @Remote, esse não é o caso da classe CursoEJB, como está a AbstractEJB ? poste ela.

a proposito, o tipo que é injetado no managed bean, eu normalmente usava o tipo da interface que eu falei, não o da implementação, de repente até funciona mas ai não tenho certeza, também pode ser isso… mude o tipo injetado no managed bean para o tipo da interface.

[quote=maior_abandonado]seu ejb é 3.0 certo? até por que no jboss 6 você não vai ter ejb 3.1… sendo assim você precisa que o seu ejb implemente alguma interface que esteja anotada com @Local ou @Remote, esse não é o caso da classe CursoEJB, como está a AbstractEJB ? poste ela.

a proposito, o tipo que é injetado no managed bean, eu normalmente usava o tipo da interface que eu falei, não o da implementação, de repente até funciona mas ai não tenho certeza, também pode ser isso… mude o tipo injetado no managed bean para o tipo da interface.[/quote]

Meu Abstract:

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import domain.entity.IEntity;

public abstract class AbstractEJB implements IEJB {
	
	private static final long serialVersionUID = 2L;

	@PersistenceContext
	protected EntityManager entityManager;

[quote=FoxMurder][quote=maior_abandonado]seu ejb é 3.0 certo? até por que no jboss 6 você não vai ter ejb 3.1… sendo assim você precisa que o seu ejb implemente alguma interface que esteja anotada com @Local ou @Remote, esse não é o caso da classe CursoEJB, como está a AbstractEJB ? poste ela.

a proposito, o tipo que é injetado no managed bean, eu normalmente usava o tipo da interface que eu falei, não o da implementação, de repente até funciona mas ai não tenho certeza, também pode ser isso… mude o tipo injetado no managed bean para o tipo da interface.[/quote]

Meu Abstract:

[code]
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import domain.entity.IEntity;

public abstract class AbstractEJB implements IEJB {

private static final long serialVersionUID = 2L;

@PersistenceContext
protected EntityManager entityManager;

[/code][/quote]

e a IEJB ??? está anotada com as anotações que eu disse?

[quote=maior_abandonado][quote=FoxMurder][quote=maior_abandonado]seu ejb é 3.0 certo? até por que no jboss 6 você não vai ter ejb 3.1… sendo assim você precisa que o seu ejb implemente alguma interface que esteja anotada com @Local ou @Remote, esse não é o caso da classe CursoEJB, como está a AbstractEJB ? poste ela.

a proposito, o tipo que é injetado no managed bean, eu normalmente usava o tipo da interface que eu falei, não o da implementação, de repente até funciona mas ai não tenho certeza, também pode ser isso… mude o tipo injetado no managed bean para o tipo da interface.[/quote]

Meu Abstract:

[code]
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import domain.entity.IEntity;

public abstract class AbstractEJB implements IEJB {

private static final long serialVersionUID = 2L;

@PersistenceContext
protected EntityManager entityManager;

[/code][/quote]

e a IEJB ??? está anotada com as anotações que eu disse?[/quote]

Opa maior_abandonado, olha o meu código do IEJB:

import java.io.Serializable;
import java.util.List;

import javax.persistence.EntityManager;

import domain.entity.IEntity;

public interface IEJB extends Serializable {

	IEntity obterID(long id);

[quote=FoxMurder][quote=maior_abandonado][quote=FoxMurder][quote=maior_abandonado]seu ejb é 3.0 certo? até por que no jboss 6 você não vai ter ejb 3.1… sendo assim você precisa que o seu ejb implemente alguma interface que esteja anotada com @Local ou @Remote, esse não é o caso da classe CursoEJB, como está a AbstractEJB ? poste ela.

a proposito, o tipo que é injetado no managed bean, eu normalmente usava o tipo da interface que eu falei, não o da implementação, de repente até funciona mas ai não tenho certeza, também pode ser isso… mude o tipo injetado no managed bean para o tipo da interface.[/quote]

Meu Abstract:

[code]
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import domain.entity.IEntity;

public abstract class AbstractEJB implements IEJB {

private static final long serialVersionUID = 2L;

@PersistenceContext
protected EntityManager entityManager;

[/code][/quote]

e a IEJB ??? está anotada com as anotações que eu disse?[/quote]

Opa maior_abandonado, olha o meu código do IEJB:

[code]
import java.io.Serializable;
import java.util.List;

import javax.persistence.EntityManager;

import domain.entity.IEntity;

public interface IEJB extends Serializable {

IEntity obterID(long id);

[/code][/quote]

então parece que está descoberto o motivo… no EJB 3.0, um session bean consiste em uma classe anotada com @Statefull ou @Stateless (seu caso) que implementa alguma interface anotada com @Local ou @Remote… essa ultima parte você não fez…

faça o seguinte para funcionar:

crie uma interface chamada ICursoEJB (ou outro nome de sua preferencia, usei esse por que parece ser o padrão que você está usando de colocar o “I” no começo), coloque nela todos os métodos de CursoEJB que você irá querer disponibilizar para ser acessado (imagino que todos os existentes);
anote a interface ICursoEJB com @Remote ou com @Local caso seu EJB somente seja acessado de dentro do mesmo EAR;
Faça a classe CursoEJB implementar ICursoEJB;
altere o tipo do atributo “ejb” no managed bean de CursoEJB para ICursoEJB;

acredito que isso seja o suficiente para funcionar.