Rafael_Nunes 18 de jun. de 2008
Você não deveria passar o nome do bean na hora do lookup?
@EJB (mappedName=“MeuBean”)
InterfaceDoBean ref;
Dessa forma você pode utilizar a mesma interface para N beans, pois o lookup é de um bean específico.
Jair_Rillo_Junior 18 de jun. de 2008
Eu nunca testei, mas tenta usar o atributo beanName do @EJB
algo assim
@EJB ( name = "blablabla" , beanName = "YourComponentBean" )
Depois nos avise se funcionou
joaosouza 18 de jun. de 2008
Acredito que assim funcione…
@EJB ( name = "Nome" mappedName = "MeuBean" )
InterfaceDoBean bean ;
Pois vc define um nome e o mapeamento para qual bean vc quer…
Falow !!!
Foxlol 18 de jun. de 2008
Testei e não funcionou.
Como devo configurar o EJB? @Stateless sem nada? Ou posso definir um JNDI? Ou teria que ter um JNDI para cada componente (bean)?
Exemplo:
@ Stateless ( name = "TesteInterfaceRemota"
public class TesteInterfaceRemota implements InterfaceRemota {}
@ Stateless ( name = "Teste2InterfaceRemota"
public class Teste2InterfaceRemota implements InterfaceRemota {}
Aí:
@EJB ( name = "TesteInterfaceRemota" )
InterfaceRemota teste ;
@EJB ( name = "Teste2InterfaceRemota" )
InterfaceRemota teste2 ;
Jair_Rillo_Junior 18 de jun. de 2008
Pelo que eu sei, o atributo mappedName não é padrão para todos os servidores, ou seja, o comportamento pode ser diferente dependendo do servidor.
Usando o beanName funcionou comigo (testei apenas no Websphere 6.1).
A inteface:
package stateless ;
public interface Test {
public void doSomeStuff ();
}
Primeira implementação
package stateless ;
import javax.ejb.Stateless ;
@Stateless
public class TestBean implements Test {
public void doSomeStuff () {
System . out . println ( "############### TEST BEAN ######################" );
}
}
Segunda implementação
package stateless ;
import javax.ejb.Stateless ;
@Stateless
public class TestBean2 implements Test {
public void doSomeStuff () {
System . out . println ( "************* TEST BEAN 2 ***************" );
}
}
Chamando os components
public class TestServlet extends javax . servlet . http . HttpServlet {
private static final long serialVersionUID = 1 L ;
@ EJB ( beanName = "TestBean" )
private Test test ;
@ EJB ( beanName = "TestBean2" )
private Test test2 ;
protected void doGet ( HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
test . doSomeStuff ();
test2 . doSomeStuff ();
response . sendRedirect ( "index.jsp" );
}
}
Saída
[6/18/08 15:29:37:700 BRT] 0000002a SystemOut O ############### TEST BEAN ######################
[6/18/08 15:29:37:700 BRT] 0000002a SystemOut O ************* TEST BEAN 2 ***************
Aqui funcionou
Rafael_Nunes 18 de jun. de 2008
ManchesteR:
Pelo que eu sei, o atributo mappedName não é padrão para todos os servidores, ou seja, o comportamento pode ser diferente dependendo do servidor.
Na verdade ele se referencia ao ‘global JNDI name’, logo é bem provável que ele seja diferente para cada AS(Bean/remote, java:Bean, etc).
Foxlol 18 de jun. de 2008
Aew ManchesteR
Estou usando OC4J como Container. Vou testar aqui e volto para falar se deu certo.
Vlw.