Bom, boa tarde, vou explicar minha situação. Tecnologias que utilizo no meu projeto (JBOSS 7.1,Struts 2,Maven)Esquema de pastas EAR(EJB,WEB.war).
já utilo lookup no meus ejbs e funciona, queria implementar CDI na minha camada service, mas meu EJB esta vindo null.
Interface
public interface ClasseEAO extends GenericEAO<Classe, Long>{
}
@Stateful
public class ClasseEAOImpl extends GenericEAOImpl<Classe, Long> implements ClasseEAO {
}
Service
[code]public class ManterClasseServiceImpl extends ManterServiceImpl implements ManterClasseService {
public ManterClasseServiceImpl(Usuario usuario,String messageId) {
super(usuario,messageId);
}
@EJB(lookup="java:global/sEAR/sEJB/ClasseEAOImpl")
private ClasseEAO classeEAO (ESTA NULL);
[/code]
Lembrando que essa JNDI esta funcionando porq já utilizo em produção só que com lookup tradicional(Context).
Já utilizei @Inject mas nada.
Bom parece que essa anotação @EJB de injeção não funciona legal com struts 2, teria que usar um plugin para isso. quando abrir um espaço n projeto para estudo volto a pensar nisso.
dcorteztec esta anatoção @EJB é para fazer referências de EJBs Locais logo não precisa de lookup.
Além de não precisar do lookup como thiagoMek mencionou, vc precisa anotar “ManterClasseServiceImpl” como EJB ou CDI, senão o servidor vai ignorar essa classe.
é tveronezi vc pode me explicar melhor essa parte “vc precisa anotar “ManterClasseServiceImpl” como EJB ou CDI”.
Exemplo:
@Stateless //ejb
public class ManterClasseServiceImpl extends ManterServiceImpl<ClasseDomain> implements ManterClasseService {
.
.
.
ou
@Stateful //ejb
public class ManterClasseServiceImpl extends ManterServiceImpl<ClasseDomain> implements ManterClasseService {
.
.
.
ou
@ApplicationScoped //managed bean
public class ManterClasseServiceImpl extends ManterServiceImpl<ClasseDomain> implements ManterClasseService {
.
.
.
ou
@SessionScoped //managed bean
public class ManterClasseServiceImpl extends ManterServiceImpl<ClasseDomain> implements ManterClasseService {
.
.
.
… entre outras, mas vc terá que modificar o construtor. da classe (público, sem parâmetros).
Sem uma dessas anotações, a tua classe não será gerenciada pelo servidor, então as DIs não funcionarão.
Pow tveronezi era isso que eu pensei na hora da sua resposta, mas eu queria ter certeza , só não vou tentar agora porque estou no meio de uma entrega, assim que testar te darei o feedback. muito obrigado pela ajuda , vlw msm funcionado vai ajudar muito.