Pergunta sobre @EJB e JBoss 4.2

6 respostas
ThiagoWorldCoder

Boa Tarde!

Eu estou tentando criar um projeto EJB no eclipse e sei que na aplicação Client eu preciso ter o @EJB para utilizar os serviços do EJB que aliás é um outro projeto, e eu tenho também o projeto .ear empacotando eles para mandar para o servidor de aplicação!

No meu caso é o JBoss 4.2.2! Eu vi num post passado do GUJ que o JBoss não implementou esta tag, e que é necessário usar o InitialContext com JNDI e coisas do tipo, o Jair Rillo Junior que havia respondido no post passado http://www.guj.com.br/posts/list/98210.java havia indicado um link mostrando como fazer isso! Só que o link não está mais ativo!

Alguém poderia me dar alguma informação de como usar o serviço do @EJB usando o JBoss?!

valeu!

6 Respostas

felipeguerra

Vc quer injetar um EJB em uma classe (EJB?) de um .jar em outro .jar, é isso?

Abraço

rissato

qdo vc está em um ambiente externo ao container EJB, a melhor forma (que vai te dar menos trabalho, na minha opinião) é fazer um loookup.

ThiagoWorldCoder

E como eu faço o lookup?

Mais uma pergunta tambem!

Quando eu crio a minha aplicaçao EJB e depois crio a aplicaçao do cliente, eu preciso anexar no projeto do cliente o .jar do projeto EJB?

Sobre o .ear, eu preciso utilizar o aplication.xml para anexar os modulos ejb?

Se responderem a pergunta do lookup, ja ta excelente galera!

L

Normalmente, é assim:

no web-xml, declare uma referência ao ejb

<ejb-local-ref>
	<ejb-ref-name>ejb/MeuBean</ejb-ref-name>
	<ejb-ref-type>Session</ejb-ref-type>
	<local>com.empresa.ejb.MeuBeanLocal</local>
</ejb-local-ref>

Aí, no seu código, invoque o InitialContext:

Context ctx = new InitialContext();
MeuBeanLocal mbl = (MeuBeanLocal) ctx.lookup("java:comp/env/ejb/MeuBean");

Cara, agora com EJB3, faz muito tempo que não entro nesses detalhes, por isso não lembro direito, mas acredito que é isso aí.

felipeguerra

Lookup JBoss

public static Object doServiceLocator(String name) throws NamingException {  
     Properties properties   = null;  
     InitialContext context  = null;  
     //------------------------------------------------------------  
              
     //------------------------------------------------------------  
     properties  = new Properties();  
     //------------------------------------------------------------  
       
     //------------------------------------------------------------  
     properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");  
     properties.put(Context.PROVIDER_URL, "jnp://localhost:1099");  
     properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");  
     //------------------------------------------------------------  
       
     //------------------------------------------------------------  
     context     = new InitialContext(properties);  
     //------------------------------------------------------------  
   
     return context.lookup(name);  
}

No EJB 3 não precisa fazer confs no xml, basta fazer lookup direto na interface.

rissato

a maneira mais fácil de fazer lookup é:ctx.lookup("NomeDoEar/NomeDoBean/local");

lembrando que o “local” depende do @Local ou @Remote que vc define no EJB.

Criado 9 de outubro de 2008
Ultima resposta 10 de out. de 2008
Respostas 6
Participantes 4