Olá, bom dia.
Estou dando os primeiros passos com EJB, tendo o apoio do Livro EJB - Component Architeture.
No primeiro client de exemplo do livro, ele ganha acesso ao objeto desta maneira:
Context initial = new InitialContext();
Object objref = initial.lookup( "java:comp/env/ejb/MyLoan" );
LoanHome home = ( LoanHome ) PortableRemoteObject.narrow( objref, LoanHome.class );
Loan loanEjb = home.create();
Mas eu comecei a me embananar um pouco por causa da segunda linha de código e, sabendo que há outras maneiras de acessar um ejb, procurei na internet e encontrei este modo aqui:
Properties prop = new Properties();
prop.put( Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory" );
prop.put( Context.PROVIDER_URL, "localhost:1099" );
InitialContext jndiContext = new InitialContext( prop );
Object ref = jndiContext.lookup( "Loan" );
LoanHome home = ( LoanHome ) PortableRemoteObject.narrow( ref, LoanHome.class );
Loan loan = home.create();
Que funcionou otimamente.
Mas fiquei com algumas dúvidas:
- qual a grande diferença entre um e outro? Por diferença quero dizer segurança, performance e design
- alguém pode fazer-me a gentileza de explicar o que é cada elemento nesta linha de código?
Object objref = initial.lookup( “java:comp/env/ejb/MyLoan” );
É por um acaso só o package da classe?
Valeu pessoal 