Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático...

24
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior Disponível em www.pasteurjr.blogspot.com

Transcript of Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático...

Page 1: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

Desenvolvimento WEB II

Professora: Kelly de Paula CunhaApresentação baseada no material didático elaborado pelo

Prof. Pasteur Ottoni de Miranda Junior Disponível em www.pasteurjr.blogspot.com

Page 2: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJB

O que é um EJB?

Entertprise Java Bean - componente server-side que encapsula a lógica de negócio de uma aplicação.

Page 3: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJB

O que é um EJB?

Page 4: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

Java na WEB: Servlet

Revisão: Camadas de uma aplicação Java EE

Paginas WEB-Servlets

-JavaServer Pages (JSP)-Beans

Máquina do Cliente Servidor web

Banco de Dados

Servidor de Banco de Dados

Page 5: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

Java na WEB: Servlet

Revisão: Encapsulamento

em programação orientada a objetos significa separar o programa em partes, o mais isoladas possível.

a ideia é tornar o software mais flexível, fácil de modificar e de criar novas implementações[

Page 6: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

Java na WEB: Servlet

Revisão: Lógica de negócio

o termo lógica de negócio é a parte de um sistema que se encarrega das tarefas relacionadas com os processos de um negócio.

Ex: entradas de dados, consultas aos dados, geração de relatórios e mais especificamente todo o processamento que se realiza por trás da aplicação visível para o utilizador (Backoffice).

Page 7: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJB

O que é um EJB?

Entertprise Java Bean - componente server-side que encapsula a lógica de negócio de uma aplicação.

- permite que o desenvolvedor de aplicações foque na lógica de negócio e não se preocupe com transações de baixo nível, detalhes de gerenciamento de status, comunicação remota, concorrência, multithreading, pools de conexão ou outras APIs complexas de baixo nível.

Page 8: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJB

Page 9: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJB

Qual o benefício do uso de EJBs ?

EJBs simplificam o desenvolvimento de aplicações grandes e distribuídas.

COMO?

Page 10: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBComo os EJBs simplificam o desenvolvimento de aplicações grandes e distribuídas?

fornece serviços de nível de sistema a elas. Com isso o desenvolvedor pode se concentrar em resolver problemas do negócio. O EJB é responsável por serviços como gestão de transações e autorizações de segurança.

São os EJBs que contêm a lógica de negócios, não os clientes. Assim sendo, o desenvolvedor da aplicação cliente pode se concentrar na apresentação, não tendo que implementar regras de negócio ou de acesso bancos de dados. Como resultado, clientes tornam-se mais leves, executáveis em máquinas menos poderosas.

Os EJBs são componentes portáteis, podendo ser reutilizados em outros aplicativos.

Page 11: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBQuando usar EJBs?

Quando a aplicação for escalável. Para suportar um crescente número de usuários, pode-se desejar distribuir aplicações por múltiplas máquinas.

Quando transações precisam garantir a integridade dos dados.

Quando a aplicação contém um grande número de clientes, leves e variados.

Page 12: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBTipos de EJBs : Session Beans e Message-driven Beans

1) Session Beans : - encapsulam lógica de negócio que pode ser

invocada programaticamente por um cliente de maneira local, remota ou via web service.

- para acessar uma aplicação armazenada em um servidor, o cliente invoca os métodos do session bean.

Page 13: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJB1) Session Beans : a) Beans com Estado de Sessão (Stateful Session Beans)- Um bean com estado de sessão tem como característica manter o estado conversacional para um cliente específico. - O estado é armazenado nos valores das variáveis de instância do bean e nos interceptadores associados.- Podemos definir um simples bean com estado de sessão usando a anotação @Stateful

Page 14: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBa) Beans com Estado de Sessão (Stateful Session Beans)

São apropriados para as seguintes situações:

• O estado do EJB representa a interação entre o EJB e um cliente específico;

• O EJB precisa manter informação do cliente entre invocação de métodos;

Page 15: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJB1) Session Beans : b) Beans sem Estado de Sessão (Stateless Session Beans) - Um bean sem estado de sessão não contém qualquer estado conversacional para um cliente específico.- Todas as instâncias de um bean sem estado de sessão são equivalentes, portanto o container pode escolher delegar um método invocado por um cliente para qualquer instância. - Podemos definir um simples bean sem estado de sessão utilizando a anotação @Stateless

Page 16: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBb) Beans sem Estado de Sessão (Stateless Session Beans) - Proveem melhor escalabilidade para aplicações

que requerem um número maior de clientes, pois aplicações requerem menos EJBs stateless do que stateful para atender ao mesmo número de clientes.

- Para incrementar a performance, deve-se escolher um EJB stateless quando, em uma única invocação de método, o EJB realiza uma tarefa genérica para todos os clientes;

Page 17: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJB1) Session Beans : c) Beans com Sessão Única (Singleton Session Beans) - São instanciados apenas uma vez por aplicação e

existem durante o ciclo de vida da mesma. - São projetados para circunstâncias nas quais uma única

instância do EJB é compartilhada e concorrentemente acessada por clientes.

- O estado é mantido entre invocações de clientes, mas não quando ocorrem quedas do servidor.

- Oferecem a mesma funcionalidade dos EJBs stateful, só que com a diferença de que são instanciado uma única vez por aplicação

Page 18: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBc) Beans com Sessão Única (Singleton Session Beans)

São apropriados nas seguintes circunstancias:

- O estado precisa ser mantido durante a execução da aplicação;

- Um único EJB precisa ser acessado por múltiplos threads concorrentemente;

Page 19: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBTipos de EJBs

2) Message-driven Beans: - permitem a aplicações JEE processar mensagens

assincronamente.

- Recebe mensagens provenientes de aplicações, outro EJB ou componentes web.

- São acessados através de um serviço de mensagens (JMS), enviando mensagens ao destinatário (MessageListener).

Page 20: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBInterface do EJB

Os métodos que darão acesso às regras de negócio do EJB devem estar contidos dentro de uma interface Java, como no exemplo abaixo:

package com.webage.ejb; import javax.ejb.*; @Remote public interface SimpleBean {

public String sayHello(String name); }

Page 21: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBA classe que implementa a interface

Obs: deve estar contida no mesmo pacote que a classe anterior.

package com.webage.ejb; import javax.ejb.*; @Stateless(name="Example", mappedName="ejb/SimpleBeanJNDI") public class SimpleBeanImpl implements SimpleBean {

public String sayHello(String name) {return "Hello " + name + "!"; }

}

Page 22: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBO cliente EJB A classe exibida abaixo faz o acesso ao Session Bean criado anteriormente.

package com.webage.client; import javax.naming.*; import com.webage.ejb.SimpleBean; public class TestClient {

public void runTest() throws Exception { InitialContext ctx = new InitialContext(); SimpleBean bean = (SimpleBean)

ctx.lookup("ejb/SimpleBeanJNDI"); String result = bean.sayHello("Billy Bob"); System.out.println(result); } public static void main(String[] args) { try { TestClient cli = new TestClient(); cli.runTest(); } catch (Exception e) { e.printStackTrace(); } }

}

Page 23: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

EJBObs:

- O objeto ctx da classe InitialContext é instanciado e é um contexto criado para acesso ao Session Bean através do chamado JNDI (Java Name and Directory Interface) Lookup, que é uma interface para localização da instância do session bean.

- Em seguida, o SessionBean é instanciado, por meio de uma chamada ao método lookup de InitialContexto, passando-se com o parâmetro o caminho JNDI.

- Na linha seguinte, o método correspondente do bean (sayHello) é invocado explicitamente

Page 24: Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.

Referências:

De Miranda Junior, Pasteur Ottoni. Enterprise Java Beans. Disponível em http://www.tesestec.com.br/pasteurjr/ejb.pdf.

Medeiros, Higor. EJB: Introdução ao novo Enterprise JavaBeans 3.2. Disponível em:http://www.devmedia.com.br/ejb-introducao-ao-novo-enterprise-javabeans-3-2/30807