27 de mai de 2012

Utilizando um EJB a partir de uma aplicação Standalone

Este artigo é basicamente continuação do ultimo artigo postado, logo será implementado uma aplicação Standalone utilizando os conceitos de JNDI, lookup e namespace.




Como exemplo vamos utilizar a chamada de um Stateless Session Bean por uma aplicação standalone, para isto sera utilizado Eclipse IndigoWeblogic 11gR1.

Para criar um projeto EJB no eclipse é simples, basta clicar com o botão direto New → EJB project, como mostra as imagem abaixo:


Agora vamos criar uma interface para um bean remoto:

package br.com.teste;

import javax.ejb.Remote;


@Remote

public interface HelloBeanRemote {

//JNDI name

static final String JNDI_NAME = “HelloBean#br.com.teste.HelloBeanRemote”;


public String test( );

}


Agora vamos criar uma classe que implemente esta interface:


package br.com.teste;


import javax.ejb.Stateless;


/**

* Session Bean implementation class HelloBean

*/


@Stateless (name = “HelloBean” , mappedName = “HelloBean”)

public class HelloBean implements HelloBeanRemote{


/**

* Default constructor.

*/

public HelloBean() {

// TODO Auto-generated constructor stub

}


public String test() {

return “Remote is Ready”;

}


}


Criamos Stateless pois não precisamos guardar nenhum estado nesta execução.

Após a criação dessas duas classes vamos fazer deploy da aplicação para o servidor Weblogic. Faça a integração do Weblogic com o eclipse que facilitará muito o trabalho!

Para certificar que tudo ocorreu bem acesse o console administrativo do Weblogic (geralmente http://localhost:7001/console/ ), selecione o domínio em que o deploy foi feito e vá em Environment → Servers → AdminiServer ( ou o servidor que o deploy da aplicação foi feito) → View JNDI Tree, deve ser aberto uma arvore que mostrara todos os objetos disponíveis no JNDI global namespace, como mostra na imagem abaixo:



Na tag Binding Name deve ter algo parecido com HelloBean#br.com.teste.HelloBeanRemote esse endereço que vamos utilizar para recuperar a instancia do Stateless Bean no lookup. Agora vamos criar uma aplicação cliente clicando em New → JavaProject, crie uma classe chamda EjbCliente :

package br.com.tutorial;


import java.util.Hashtable;


import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import br.com.teste.HelloBean;

import br.com.teste.HelloBeanRemote;


public class EjbCliente {


public static void main(String[] args) {

EjbCliente client = new EjbCliente();

client.connect();

}


public void connect(){

try {


/* — If is WebLogic  — */


Context ctx = null;

Hashtable ht = new Hashtable();

ht.put(Context.INITIAL_CONTEXT_FACTORY,”weblogic.jndi.WLInitialContextFactory”);

ht.put(Context.PROVIDER_URL,”t3://localhost:7001″);

ctx = new InitialContext(ht);

HelloBeanRemote helloBean = (HelloBeanRemote) ctx.lookup (HelloBeanRemote.JNDI_NAME);

System.out.println(helloBean.test());


} catch (NamingException e) {

e.printStackTrace();

}

}

}


Adicione a seguinte bibliotecas no classpath da aplicação cliente :

wlclient.jar

*Essa biblioteca pode ser encontrada dentro da pasta do Weblogic, não adicione outras bibliotecas do Weblogic além desta no projeto ou poderá ocasionar um erro.
Na aba project adicione o projeto Tutorial_JNDI_webLogic pois la estão presentes as referências que o projeto cliente precisa para executar.
Agora execute o cliente e o seguinte resultado deve aparecer :
Remote is Ready!

Nenhum comentário:

Postar um comentário