Erro ao chamar EJB usando JBoss 4.2.2

Olá amigos,
Fiz uma pequena aplicação em que um BackingBean JSF chama um EJB. Empacotei tudo num .ear (.war, META-INF e ejb.jar), joguei no JBoss, a aplicação subiu legal. No console do JBoss diz que os EJBs subiram (12:20:07,515 INFO [EJBContainer] STARTED EJB: br.com.dc.business.CalculoDiferencial ejbName: CalculoDiferencial
12:20:07,578 INFO [EJB3Deployer] Deployed: file:/C:/jboss-4.2.2/server/default/
tmp/deploy/tmp29335ControlCenter.ear-contents/ejb-jar.jar)
Porém ao chamar esse EJB a partir do meu backing bean dá NullPointerException. Abaixo trecho do código do backing bean em que chamo o EJB:
1 package br.com.dc.view;
2 import javax.ejb.EJB;
3 importbr.com.dc.business.CalculoDiferencialInterface ;
4 public class CalculoDiferencialMB {
5 @EJB
6 private CalculoDiferencialInterface cdi;
7 public String calculo(){
8 System.out.println("—CALCULO EJB: BACKING BEAN");
9 //aqui ocorre o erro
10 cdi.calcular();
11 return “posCalculo”;
12 }
13 }

O erro ocorre na linha 10, é como se o contêiner não estivesse injetando o EJB na variável cdi

Agradeço a todos

Sávio Barros

Olá saviobarr,

Está dando erro, pois no JBoss a anotação @EJB ainda não foi implementada.
No JBoss, você vai ter que usar a chamada via JNDI. (lookup)
Agora se você usar o Glassfish ou o Sun Application Server funciona blz.

Espero ter ajudado
[]s

[quote=brunolinsalves]Olá saviobarr,

Está dando erro, pois no JBoss a anotação @EJB ainda não foi implementada.
No JBoss, você vai ter que usar a chamada via JNDI. (lookup)
Agora se você usar o Glassfish ou o Sun Application Server funciona blz.

Espero ter ajudado
[]s[/quote]

Essa informação não confere! Uso JBoss e uso @EJB!

Não sei aonde está o erro nesse caso!

[]'s

[quote=lavh][quote=brunolinsalves]Olá saviobarr,

Está dando erro, pois no JBoss a anotação @EJB ainda não foi implementada.
No JBoss, você vai ter que usar a chamada via JNDI. (lookup)
Agora se você usar o Glassfish ou o Sun Application Server funciona blz.

Espero ter ajudado
[]s[/quote]

Essa informação não confere! Uso JBoss e uso @EJB!

Não sei aonde está o erro nesse caso!

[]'s[/quote]

ops…uma pista!

@EJB só funciona em classes que são gerenciadas pelo container, aparentemente essa sua classe CalculoDiferencialMB não está sendo gerenciada pelo container. Eu sei que outros EJBS e JMXs são gerenciados, agora quanto a coisas do JSF não sei dizer…

[]'s

[quote=brunolinsalves]Olá saviobarr,

Está dando erro, pois no JBoss a anotação @EJB ainda não foi implementada.
No JBoss, você vai ter que usar a chamada via JNDI. (lookup)
Agora se você usar o Glassfish ou o Sun Application Server funciona blz.

Espero ter ajudado
[]s[/quote]
Olá,
Desculpa, mas a annotation @EJB no JBoss foi implementada sim. Tanto que ela está empacotada num dos jars que acompanham o JBoss (jboss-ejb3-all-2004-04-17.jar).
Mas obrigado por ter respondido. Se você tiver outra sugestão será de grande valia.
Abraço

Sávio Barros

[quote=lavh][quote=lavh][quote=brunolinsalves]Olá saviobarr,

Está dando erro, pois no JBoss a anotação @EJB ainda não foi implementada.
No JBoss, você vai ter que usar a chamada via JNDI. (lookup)
Agora se você usar o Glassfish ou o Sun Application Server funciona blz.

Espero ter ajudado
[]s[/quote]

Essa informação não confere! Uso JBoss e uso @EJB!

Não sei aonde está o erro nesse caso!

[]'s[/quote]

ops…uma pista!

@EJB só funciona em classes que são gerenciadas pelo container, aparentemente essa sua classe CalculoDiferencialMB não está sendo gerenciada pelo container. Eu sei que outros EJBS e JMXs são gerenciados, agora quanto a coisas do JSF não sei dizer…

[]'s[/quote]
Olá,
E como resolver isso? Como saber se CalculoDiferencialMB (cliente que está chamando o EJB) está sendo gerenciada pelo contêiner?
Abraços

Sávio

Você terá de fazer um lookup utilizando JNDI (InitialContext , etc…)

[]'s

Use lookup.
Tenho um exemplo utilizando Servlet, mas que você pode facilmente utilizar no seu JSF também.
http://jairrillo.wordpress.com/2008/04/25/example-of-ejb3-session-bean-using-eclipse-europa-and-jboss/