|
Muito se falava de EJB, mas poucos foram os casos de aplicações que o utilizaram na prática e obtiveram êxito. Afinal criar um EJB (versão 2.1) era muito complexo e ainda tinha a sua utilização que era complicada. Resumindo, o Conceito era muito bom (para alguns até maravilhoso), mas na prática a utilização do Spring junto com um ou dois frameworks resolvia o problema.
Depois de tanto se falar com respeito as dificuldades no EJB, a comunidade foi ouvida e eis que surge o EJB3. Simples, sem aquele monte de xml. E fácil, qualquer POJO pode ser um EJB, basta anotar.
Veja um exemplo:
Interface Remota: CalculadoraRemote.java
package br.com.brazilianforce.exemplos.ejb3.calculadora;
import javax.ejb.Remote;
/**
* Interface Remota do Serviço Calculadora.
*/
@Remote
public interface CalculadoraRemote {
/**
* Efetua cálculo e retorna o valor.
*
* @param numero1
* @param numero2
* @param operacao
* @return
*/
public Double cacular(Double numero1, Double numero2, Integer operacao);
}
Bean: CalculadoraBean.java
package br.com.brazilianforce.exemplos.ejb3.calculadora;
import javax.ejb.Stateless;
/**
* Implementação do Serviço Calculadora.
*/
@Stateless
public class CalculadoraBean implements CalculadoraRemote {
/*
* (non-Javadoc)
*
* @see
* br.com.brazilianforce.exemplos.ejb3.calculadora.CalculadoraRemote#cacular
* (java.lang.Integer, java.lang.Integer, java.lang.Integer)
*/
@Override
public Double cacular(Double numero1, Double numero2, Integer operacao) {
Double resultado = null;
switch (operacao) {
// subtração
case 1:
resultado = numero1 - numero2;
break;
// multiplicação
case 2:
resultado = numero1 * numero2;
break;
// divisão
case 3:
resultado = numero1 / numero2;
break;
// adição
default:
resultado = numero1 + numero2;
break;
}
return resultado;
}
/**
* Teste Serviço Calculadora
*
* @param args
*/
public static void main(String[] args) {
System.out.println(new CalculadoraBean().cacular(10D, 20.3D, 0));
System.out.println(new CalculadoraBean().cacular(10.1D, 20D, 1));
System.out.println(new CalculadoraBean().cacular(10.3D, 20.1D, 2));
System.out.println(new CalculadoraBean().cacular(22D, 3D, 3));
}
}
Cliente: CalculadoraClient.java
package br.com.brazilianforce.exemplos.ejb3.calculadora;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* Cliente do Serviço Calculadora.
*
*/
public class CalculadoraClient {
/**
* Teste Serviço Calculadora no JBoss.
*
* @param args
*/
public static void main(String[] args) {
// padrão JBoss para jndi remoto: <nome-ejb>/remote
final String jndiName = "CalculadoraBean/remote";
try {
Context ic = new InitialContext();
Object obj = ic.lookup(jndiName);
CalculadoraRemote calculadora = (CalculadoraRemote) obj;
System.out.println(calculadora.cacular(10D, 20.3D, 0));
System.out.println(calculadora.cacular(10.1D, 20D, 1));
System.out.println(calculadora.cacular(10.3D, 20.1D, 2));
System.out.println(calculadora.cacular(22D, 3D, 3));
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Pronto!
Note que não configuramos nenhum XML ou qualquer outro arquivo, criamos apenas POJOs.
 
Realmente o EJB3 veio para simplificar e com certeza entra na lista de possíveis tecnologias na hora de criar a arquitetura de um software em JAVA.
 
Apesar de tornar fácil a criação e utilização ainda é um EJB, sendo assim trás uma série dependências com outros serviços. Por isso, a escolha das tecnologias na criação da arquitetura deve ser imparcial, deixando de lado qualquer modismo existente no mercado e lembrando que o que vale na realidade é a necessidade do cliente.
 
Grande Abraço!
|