Skip to content

Instantly share code, notes, and snippets.

@joffilyfe
Last active July 18, 2017 14:23
Show Gist options
  • Save joffilyfe/5d94d9df245b5428f1b2748a0357af8a to your computer and use it in GitHub Desktop.
Save joffilyfe/5d94d9df245b5428f1b2748a0357af8a to your computer and use it in GitHub Desktop.

EJB

O EJB é uma arquiterua destinada a distribuir componentes de forma resiliente, segura e escalavel. Para executar uma aplicação EJB é necessário utilizar um container EJB.

O container é responsável por controlar a segurança, o ciclo de vida e transações das aplicações.

  • Alocação de processos, controle de threads, destruição de objetos
  • Autenticação de usuários

Usamos quando precisamos:

  • De acesso remoto
    • A aplicação será distribuida
  • De escalonamento:
    • A aplicação irá rodar em vários servidores, clusters e failover.
  • Encapsulamento de código
    • A aplicação que utiliza o EJB Bean não precisa do seu código.

Ao utilizar a arquitetura EJB nós temos vantagens em relação ao RMI, são elas:

  • Não precisamos implementar a segurança
  • Não precisamos gerenciar o ciclo de vida de um objeto

Contudo ao utilizar o EJB nós precisamos utilizar um container EJB, coisa que o RMI não exige.

Arquiterura EJB

Nós temos três componentes na arquitetura EJB, são eles:

  • Bean de sessão (é como o JSF BEAN)
  • Beans orientados a mensagens
  • Beans de entidade (Equivalente ao JPA => acesso ao banco de dados)

Beans de sessão

Os beans de sessão são utilizados para coordenar a interação entre outros beans (Entidade). Utilizamos um BS como um controlador, ou seja, ele é responsável por encapsular a lógica da aplicação.

Um CarrinhoVirtualBean provavelmente terá a lógica de adicionar itens ao carrinho, remover e proceder para a compra.

Quando utilizamos um bean de sessão nós anotamos sua classe com um desses termos:

  • @Local - São beans de sessão acessíveis apenas por outros beans na mesma maquina
  • @Remote, são beans que podem ser invocados remotamente
  • @Endpoint, são beans invocados via WebService

Utilizando os beans de sessão

Ao utilizar um bean de sessão nós podemos definir três tipos de BS:

  • Stateless, não mantem um estado de conversa ou seja, é igual a um bean de request: é utilizado e depois morto ou reutilizado.
  • Stateful, é um tipo de beam que é guardado e mantido para um usuário, ou seja, se ele foi utilizado as 10:40 e definiu algum parâmetro então as 10:41 ele manterá o mesmo estado definido anteriormente. Ele é análogo ao bean de sessão do JSF.
  • Singleton - Não explicado ainda.

Código

public class Produto implements Serializable {
}

Interface necessária

@Remote
public interface CarrinhoRemoto {
   public void addItem(Produto produto);
}

Bean de sessão remoto

@Remote
@Statefull
public class CarrinhoVirtualBean implements CarrinhoRemoto {
   private ArrayList<Produto> produtos;
   
   @PostConstruct
   public void CarrinhoVirtualBean() {
     this.produtos = new ArrayList<Produto>();
   }

   public void addItem(Produto produto) {
     this.produtos.add(produto);
   }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment