Programa de disciplina resumido



Baixar 250,33 Kb.
Página3/3
Encontro06.09.2018
Tamanho250,33 Kb.
1   2   3

18-10-2010

PG1

Exemplos de container

BEA Web Logic Server

Glass Fish da Sun Microsystems

IBM Webphere

JBoss Application Server

Ocacle Aplication Server


Alguns conceitos
EJB-Enterprise JavaBeans
Componente de software padrão executado no lado do servidor(Camada de negócio) que encapsula a lógica que atende às necessidades de um domínio dentro de negócios.

É utilizada a criação de aplicação corporativa distribuídas desenvolvidas em Java.


Conteiner EJB
É o ambiente responsável por gerenciar o ciclo de vida das instancias das classes Bean (Objetos EJB)

Entro de um servidor de aplicação.


Servidor de Aplicação Java EE
Sistema que deve implementar os seguintes serviços:

  • Enterprise Java Beans(Container EJB)

  • Java Persistence(JPA)

  • Java Message Service(JMS)

  • Java Transaction Service / Java Transaction API (JTS/JTA)

  • Servlets e Java Server Pages (JSP- Container Web)

  • Java Naming and Directory Interface (JNDI).

Disponibiliza também entre outros recursos:



  • Pool de instâncias EJB

  • Pool de conexões a bando de dados

  • Controle de concorrências

  • Conectividade remota

  • Gerenciamento de segurança:

    • Autenticação (Identificação do usuário)

    • Autorização (Controle do que o usuário pode fazer)

    • Comunicação (Criptografia)

Quando usar EJB em suas aplicações:



  • Quando a aplicação deve ser estável, tanto por possuir um numero crescente de usuários, quanto quando há a necessidade de distribuir a aplicação em múltiplas maquinas.

  • Quando transações são necessárias para garantir a integridade de dados.

  • Quando a aplicação possuir um alto número de clientes. Como a lógica de negócio fica nos componentes do lado do servidor, a manutenção é facilitada.


Os três tipos básicos de Enterprise Java Beans são:

  • Entidades (JPA Entities)

São persistentes, representam o modelo de dados e são gerenciadas pelo EntityManager

  • Beans de Sessão (Session Beans)

São freqüentemente utilizados para gerenciar as interações entre as entidades.

Representam um fluxo de tarefas, um processo de negócio.



  • Beans Baseados em Mensagens (Message Driver Beans)

Recebem e processam mensagens na interação com outros aplicativos através de um serviço de mensagens (JMS). Normalmente implementam a interface MessageListener, implementando assim o método anMessage() onde se calcula a lógica de negócio.
Tipos de Beans de Sessão


  • Stateless SessionBean (Beam de sessão sem informações de estado)

Não mantêm nenhum estado conversacional entre cliente e o servidor. São mantidos em um pool de instâncias. Possuem um desempenho maior que os Beans de sessão com informações de estado. São utilizados para realizar tarefas que sejam realizadas em uma única chamada de método.


  • Stateful Sesseion Bean (Bean de sessão o informações de estado)

Mantêm o estado conversacional entre as chamadas de um cliente para o servidor, o que permite manter dados específicos ao cliente entre invocações de métodos. É uma extensão do aplicativo cliente. Não são mantidos em um pool de instancias. Ao invés disso, o container instancia o bean no momento em que o cliente solicita um.

O bean atende apenas um cliente e é destruído quando o cliente encerra sua utilização.


25/10/2010

Componentes de um aplicativo que utiliza Session Bean




  • Interface remota ou local

Um cliente não tem acesso direto a implementação do bean de sessão. O cliente, ao invés disso, acessa uma interface desse bean. Os beans de sessão podem ser expostos por mais de uma interface e as intefaces podem ser:

Interface remota, anotada com @Remote. Define quais os métodos que um cliente tem direito de acessar de fora do contêiner.

Interface local, anotada com @Local. Define quais os métodos que um EJB pode acessar de dentro do mesmo contêiner.
Desenho 1
Exemplo:
package calculadora;

import javax.ejb.remote;

public interface Calculadora1 {

public double soma (double a, double b);

public double subtrai (double a, double b);

public double multiplica (double a, double b);

public double divide (double a, double b);


  • Classe do bean

A classe do bean deve implementar alguma interface anotada como @Remote ou @Local. A classe do bean, por sua vez,e anotada com @Stateless ou @Stateful. Contem a lógica de negocio que é realizada pela implementação dos métodos da interface.

Um EJB anotado com @Stateless não armazena informações a respeito do cliente que esteja atendendo. É disponibilizado em um pool de instâncias e apresenta um desempenho melhor em relação aos beans com informação de estado.


Exemplo:
package calculadora;

importjavax.ejb.Stateless;


@Stateless

public class Calculdora1Beans implements Calculadora1 {

public double soma (double a, double b) {

return a + b;

}

public double subtrai (double a, double b) {



return a - b;

}

public double multiplica (double a, double b) {



return a * b;

}

public double divide (double a, double b){



return a / b;

}

}


Cliente Remoto

É a aplicação que se conecta ao servidor EJB por meio de injeção de dependência, que indica o ponto do código do aplicativo cliente onde o EJB será inserido.

A injeção de dependentes é a anotação que instrui o contêiner a disponibilizar um objeto diretamente no código do cliente. Podem ser:
@EJB: Injeta um objeto EJB (um bean session)

@PersistenceContext: Injeta a EntityManager

@ PersistenceUnit: Injeta um EntityManagerFactory

Exemplo:

package cliente;

import javax.ejb.EJB;

import calculadora.Calculadora1;

public class ClienteCalculadora1{

//Injeção de dependencia

@EJB

private static Calculadora1 calc;

public static void main(String args[]){

System.out.println("Iniciando o programa cliente");

System.out.println("Soma (3,4)=%6.2f\n",calc.soma(3,4));

System.out.println("subtrai(5,4)=%6.2f\n",calc.subtrai(5,4));

System.out.println("multiplica(2,3)=%6,2\n", calc.multiplica(2,3))

System.out.println("divide(4,3)=%(4,3)=%6.2f\n",calc.divide(4,3))

}

}

Um bean de sessão com informações de estado atende um único cliente por todo seu ciclo de vida. Assim, ele pode armazenar dados temporários a respeito de seu cliente.


Exemplo:
package cliente;

import javax.ejb.Remote;

@Remote



public interface Calculadora2{

public void novaConta();

public void soma(double d);

public void subtrai (double d);

public void multiplica(double d);

public void divide(double d);

public void obtemResultado();

}
package claculadora;

import javax.ejb.Stateful;

@Stateful



public interface Calculadora2Bean implements Calculadora2{

//Atributo que armazenam dados temporarios do cliente:



private double memoria;

public void novaConta(){

memoria = 0;

}

public void soma(double d){



memoria +=d;

}

public void subtrai(double d){



memoria -= d;

}

public void multiplica (double d){



memoria*=d;

}

public void divide(double d){



memoria/=d;

}

/*



A anotação @Remote indica que a execução

do próximo método é o fim da vida do bean

*/

@Remote


public double obtemResultado(){

return memoria;

}

}

package cliente;



import javax.ejb.EJB;

import calculadora.Calculadora2;

public class ClienteCalculadora2{

//Injeção de dependência:

@EJB

private static Calculadora2 calc;

public static void main(String args[]){

System.out.println("iniciando o projeto cliente: ");



calc.novaConta();

calc.soma(10);

calc.divide(2);

calc.multiplica(4);

calc.subtrai(1);

/*Metodo anotado com @Remote que instrui oonteiner a destruir o bean*/

System.out.println("Resultado:%6.2f\n", calc.obtemResultado());

}

}



Regras para se construir um bean de sessão:

  • Deve possuir pelo menos uma interface

  • A classe do bean deve ser concreta(não pode ser abstrata ou final)

  • Deve ter um construtor sem parâmetros

  • Uma classe bean de sessão pode ser uma subclasse de outro bean de sessão ou POJO

  • Os métodos de negócios e os métodos de callback de ciclo de vida podem ser definidos em uma classe bean ou superclasse.

  • Os nomes de métodos não podem começar com “ejb”. Por exemplo, não use “ejbCreate”como nome de método.

Desenho 1



Desenho 2

1   2   3


©bemvin.org 2016
enviar mensagem

    Página principal