Ajudar para ler um EJB

4 respostas
carol_programadora

Pessoal, nunca usei ejb, e estou precisando de uma ajuda.
Conseguir vários materiais para entender o que são etc.
Me foi enviada um arquivo .ear, onde está o ejb para fazer um teste.
Não consegui entender como faço para ler este arquivo, onde colocar? tudo que achei na net foi como criar e depois ler… mas assim depois de pronto…

Eu deveria colocar ele no \jboss-4.2.2.GA\server\default\deploy (no meu caso uso jboss) ? e depois tentar ler este ejb através do Lookup?

ou tenho que pegar este .ear e colocar dentro da minha web app atual…

minha dúvida no momento é onde colocar pra usar este arquivo .ear que me foi entregue?

obrigada a todos.

4 Respostas

Jair_Rillo_Junior

EAR é uma aplicação enterprise já empacotada para fazer o deploy. Dentro do EAR, geralmente estão os módulos EJBs (JAR), Web (WAR) e outros módulos.

Para você utilizar o módulo EJB na sua aplicação WEB, você precisa das interfaces dos componentes EJBs (no caso EJB2 e EJB3 são diferentes, já que o EJB2 tem mais interfaces).

Tenta descompactar esse arquivo .EAR (o Winrar eu acho que faz isso) e verifica se tem um módulo EJB lá (.JAR). Se sim, tenta descompactar ele e olhe se tem as interfaces, se sim, você pode usá-la no seu projeto Web. Porém aconselho a pedir para a pessoa que criou isso, criar um pacote só com as interfaces (conhecido como Application Client) e te enviar, assim ficando mais fácil para você.

carol_programadora

oi obrigada pela ajuda, fiz um procedimento mas deu erro: criei um projeto EAR no eclipse, adicionei o jar do ejb e coloquei junto meu .war da minha aplicação que vai usar o ejb e ai coloquei no servidor, mas na hora de subir o server olha que deu:

17:03:21,042 ERROR [[/Client]] Exception sending context initialized event to listener instance of class org.jboss.web.jsf.integration.config.JBossJSFConfigureListener
java.lang.IncompatibleClassChangeError: Class org.jnp.server.NamingServer does not implement the requested interface org.jnp.interfaces.Naming
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:667)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:774)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
	at javax.naming.InitialContext.lookup(Unknown Source)

olha minha classe de leitura do EJB, peguei dicas com outros posts mas não consegui:

public String execute() throws NamingException{
        System.out.println("Consumindo componente de negócio");
        Properties props = new Properties();   
        props.setProperty("java.naming.provider.url","jnp://127.0.0.1:1099");   
        props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");   
        props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");           
           
        Context ctx = new InitialContext(props); 
        
        AcoesNegocio t = (AcoesNegocio) ctx.lookup("AcoesCentral/remote");
        mensagem = t.getUsuarios().get(0);
        return INPUT;
}
D

Três OBS:

AcoesNegocio precisa ser a interface @Remote, já que seu lookup está procurando a implementação remota (tem as propriedades).

O lookup pode estar consultando o caminho errado. Abra o JBOSS JNDI View.

a) http://localhost:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss:service%3DJNDIView

b) clique no Invoke do “Output JNDI info as text”

c) no “Global JNDI Namespace” procure suas interfaces, você verá algo como:

± jboss5-dev (class: org.jnp.interfaces.NamingContext)

|   ± FinanceSession (class: org.jnp.interfaces.NamingContext)

|   |   ± local (proxy: $Proxy172 implements interface com.sarbarian.finance.IFinanceLocal,interface org.jboss.ejb3.JBossProxy)

|   |   ± remote (proxy: $Proxy171 implements interface com.sarbarian.finance.IFinanceRemote,interface org.jboss.ejb3.JBossProxy)

ai seu lookup precisa ser ctx.lookup("jboss5-dev/FinanceSession/remote");

ou seja:

EAR/EJB/Interface…

Por fim, se o EJB tá instalado no seu próprio servidor, não precisa fazer lookup remoto, faça apenas local, é menos overhead…

ok?

Boa sorte,

Davi.

herbertpimentel

Fantastico Davi, eu tinha esse mesmo problema e enfim consegui ver que nome devo colocar atraves do nome que ficou disponivel no JBOSS

Minha como eu faço a mesma coisa no glassfish

Criado 22 de outubro de 2008
Ultima resposta 31 de out. de 2008
Respostas 4
Participantes 4