APLICAÇÃO J2EE – EXEMPLO PRÁTICO Guilherme Amaral Avelino ConverterApp Criação de uma aplicação J2EE simples, que realiza conversões monetárias Os passos para a construção da aplicação são 1. 2. 3. 4. 5. 6. Construção do aplicativo J2EE: ConverterApp Construção do enterprise bean: ConverterBean Construção do cliente de aplicativo: ConverterClient Construção e empacotamento de um cliente Web Implantação do ConverterApp no servidor Execução dos clientes Construção do ConverterApp Deve se criar uma nova aplicação J2EE e gerar seu pacote de implantação (ConverterApp.ear) Abra a ferramenta de implantação deploytool 1. a. 2. 3. 4. 5. 6. %J2EE_HOME%\bin\deploytool.exe Selecione File → New → Application Selecione o local para a criação da aplicação Em File Name, entre ConverterApp.exe New Aplication OK Construção do Enterprise Bean Deve armazenar a lógica de negócio da aplicação Será representado por um ejb de sessão stateless Passos: 1. 2. 3. 4. Criar a pasta /src para armazenamento das classes e interfaces do aplicativo Codificar a classe e as interfaces do bean Compilar o código fonte com o asant Empacotar o Ejb em um arquivo JAR EJB e adicionálo a aplicação Construção do Enterprise Bean Codificando a interface remota Define os métodos de negócio que um cliente pode chamar package converter; import javax.ejb.EJBObject; import java.rmi.RemoteException; import java.math.*; public interface Converter extends EJBObject { public BigDecimal dollarToYen(BigDecimal dollars) throws RemoteException; public BigDecimal yenToEuro(BigDecimal yen) throws RemoteException; } Construção do Enterprise Bean Codificando a interface home Define os métodos de permitem um cliente criar, encontrar, ou remover, um enterprise bean package converter; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface ConverterHome extends EJBHome { Converter create() throws RemoteException, CreateException; } Construção do Enterprise Bean Codificando a classe enterprise bean Implementa os métodos de negócio definidos pela interface remota package converter; import java.rmi.RemoteException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import java.math.*; public class ConverterBean implements SessionBean { BigDecimal yenRate = new BigDecimal("121.6000"); BigDecimal euroRate = new BigDecimal("0.0077"); public BigDecimal dollarToYen(BigDecimal dollars) { BigDecimal result = dollars.multiply(yenRate); return result.setScale(2, BigDecimal.ROUND_UP); } Construção do Enterprise Bean public BigDecimal yenToEuro(BigDecimal yen) { BigDecimal result = yen.multiply(euroRate); return result.setScale(2, BigDecimal.ROUND_UP); } public ConverterBean() {} public void ejbCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} } Construção do Enterprise Bean Empacotando o EJB Com auxilio da deploytool os seguintes passos devem ser realizado: Criação do descritor de implantação do bean Empacotamento do descritor e das classes do bean em um arquivo EJB EAR (ConverterJAR ) Inserção do arquivo JAR EJB no arquivo ConverterApp.ejb Construindo o cliente de aplicativo Programa escrito em Java que em tempo de execução acessa um serviço fornecido por um que está ejb executando em um servidor de aplicação Requer 2 arquivos JAR Contém as classes do cliente e seu descritor de implantação Contém as classes stubs requeridas pelo programa do cliente em tempo de execução para acessar os ejbs que rodam no servidor 1. 2. a. É criado pelo deploytool quando a aplicação é implantada Construindo o cliente de aplicativo Codificar o cliente de aplicativo requer: 1. 2. 3. Localizar a interface home Criar uma instância do ejb Chamar os métodos de negócio Construindo o cliente de aplicativo Passos para localização da interface home de um EJB 1. 2. 3. 4. Crie o contexto de atribuição de nome inicial Obtenha o contexto de nomenclatura do ambiente do cliente de aplicação Obtenha o objeto ligado ao nome ejb/SimpleConverter Estreite a referência para um objeto ConverterHome Criando uma instância do ejb //código localização da interface home ContextcurrencyConverter initial = new InitialContext(); Converter = home.Create Context myEnv = (Context) initial.lookup("java:comp/env"); Object objref = myEnv.lookup("ejb/SimpleConverter"); ConverterHome home = (ConverterHome) PortableRemoteObject.narrow(objref, //código criação de uma instância do ejb ConverterHome.class); Converter currencyConverter = home.create(); Converter currencyConverter = home.create(); import converter.Converter; import converter.ConverterHome; import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import java.math.BigDecimal; public class ConverterClient { public static void main(String[] args) { try { //código localização da interface home //código criação de uma instância do ejb BigDecimal param = new BigDecimal("100.00"); BigDecimal amount = currencyConverter.dollarToYen(param); System.out.println(amount); amount = currencyConverter.yenToEuro(param); System.out.println(amount); System.exit(0); } catch (Exception ex) { System.err.println("Caught an unexpected exception!"); ex.printStackTrace(); } } }