Componentes no Java EE



Documentos relacionados
PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

HIBERNATE EM APLICAÇÃO JAVA WEB

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

UFG - Instituto de Informática

J2EE TM Java 2 Plataform, Enterprise Edition

Java II. Sérgio Luiz Ruivace Cerqueira

Web Technologies. Tópicos da apresentação

Enterprise Java Beans

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS

Associação Carioca de Ensino Superior Centro Universitário Carioca

JPA: Persistência padronizada em Java

Enterprise Java Bean. Enterprise JavaBeans

TDC2012. EJB simples e descomplicado, na prática. Slide 1

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

PROJETO PEDAGÓGICO DE CURSOS


UFG - Instituto de Informática

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Java para WEB. Servlets

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Capítulo 1 - Java EE 6 por alto - 1

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

UFG - Instituto de Informática

WebApps em Java com uso de Frameworks

Prof. Fellipe Araújo Aleixo

DESENVOLVIMENTO COM JAVA EE E SUAS ESPECIFICAÇÕES

Laboratório EJB e J2EE Uma aplicação completa

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

J2EE. J2EE - Surgimento

UNIVERSIDADE. Sistemas Distribuídos

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Web Services. (Introdução)

Scriptlets e Formulários

Java para Desenvolvimento Web

Persistência de Dados em Java com JPA e Toplink

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Prova Específica Cargo Desenvolvimento

Aula 03 - Projeto Java Web

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Java 2 Enterprise Edition Uma aplicação J2EE completa

Java II. Sérgio Luiz Ruivace Cerqueira

Mini-curso Gratuito Globalcode Slide 1

Sistemas Distribuídos e Tolerância a Falhas Mestrado em Engenharia Informática 1ª ano / 2ª semestre

Introdução. <facelets> Templates. Configurações. Componentes. Prof. Enzo Seraphim

EJB 3.1: A Community Update

Desenvolvimento Web TCC Turma A-1

INTRODUÇÃO À TECNOLOGIA SERVLETS

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Hibernate. Mapeamento Objeto-Relacional. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

Adriano Reine Bueno Rafael Barros Silva

Oracle WebLogic Server 11g: Conceitos Básicos de Administração

Tecnologias Web. Java Enterprise Edition

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Desenvolvimento Web com Framework Demoiselle versão 1.0

JSF - Controle de Acesso FERNANDO FREITAS COSTA

Parte I. Demoiselle Mail

Programação Web Aula 12 - Java Web Software

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Framework. Marcos Paulo de Souza Brito João Paulo Raittes

J550. Model View Controller

Arquitetura JEE Introdução à Camada de Negócios: Enterprise Java Beans (EJB) Marcos Kalinowski

Orientada a serviços: JAX-WS SOAP API

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

JavaServer Faces. Parte 2

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Desenvolvimento de aplicações Web. Java Server Pages

4 O Workflow e a Máquina de Regras

Sistemas Distribuídos

Curso de Aprendizado Industrial Desenvolvedor WEB

Spring: Um suite de novas opções para Java EE

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

Java Beans e Servlets


EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux

Integração de sistemas utilizando Web Services do tipo REST

Mapeamento Lógico/Relacional com JPA

UFG - Instituto de Informática

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Prática Sobre Servlets e JSP

Transcrição:

Unidade III Componentes no Plataforma Java Enterprise Edition Adiciona ao Java suporte para: Desenvolvimento de Aplicações Web: JSP, Servlets e Componentes de Negócio: Interconexão com Sistemas Legados: Java Connectors Fornece diversas APIs para: Comunicação: JMS, JavaMail Gerenciamento de Transações: JTA Persistência de Dados: entre outros. 2 Arquitetura do http://java.sun.com 3 Camadas do Camada Cliente Clientes Web (navegadores, etc.) Aplicações Clientes Camada Web Páginas JSP,, Servlets e JavaBeans Camada de Negócios Componentes Camada de Sist. de Informações Empresariais Integração com BDs e outros sist. legados 4 Camada Cliente Clientes Web Acessam a camada Web, que gera as páginas visualizadas no navegador Utilizam protocolos HTTP e HTTPS Aplicações Clientes Aplicações Java ou CORBA (multi-linguagem) Acessam a camada de negócios diretamente Interagem através do protocolo IIOP 5 Servidor Possui duas camadas: Camada Web Composta por páginas JSP e, Servlets e JavaBeans Acessada pelos clientes Web Camada de Negócios Formada por componentes Usada pela camada Web e por aplicações clientes 6 1

es do Servidor Servidor Existem dois tipos de contêiner Web: hospeda páginas JSP e, Servlets e JavaBeans : gerencia a execução dos Enterprise JavaBeans Nem todos os servidores fornecem os dois tipos de contêiner Ex.: Tomcat possui apenas contêiner Web http://java.sun.com 7 8 Java Server Pages (JSP) Permite a geração dinâmica de conteúdo Web Código Java é inserido em páginas HTML ou XML para gerar conteúdo dinâmico Geração do conteúdo baseada em parâmetros passados na URL, na identificação do usuário, dados de um BD ou de JavaBeans, etc. Requer um servidor Web compatível com para executar o código JSP Cliente Web não tem acesso ao código JSP JSP, ao ser compilado, gera um servlet 9 Servlets São classes Java que implementam a interface javax.servlet.servlet Instanciados e mantidos em execução no servidor Processam requisições enviadas para uma URI Servlet HTTP Recebe requisições via HTTP[S] Possui métodos que tratam cada tipo de mensagem do protocolo (GET, POST, etc.) Geram saída exibida no browser (ex: HTML) 10 Java Server Faces () Suporte para criação de aplicações Web utilizando componentes Facilita o desenvolvimento de aplicações Web Fornece componentes para criação de páginas Efetua tratamento de eventos gerados pela interação do usuário com o navegador Web Enterprise JavaBeans () Componentes que rodam no servidor Acessam os sistemas legados da empresa para implementar regras de negócio Ciclo de vida gerenciado pelo contêiner Persistência de dados efetuada pela (Java Persistence API) 11 12 2

Camada de Sistemas de Informações Empresariais (EIS) Usada pelos componentes da camada de negócio p/ acesso a software de infraestrutura Banco de Dados Monitores de Transações Enterprise Resource Planning (ERP) Customer Relationship Management (CRM)... e outros sistemas legados Estes sistemas geralmente rodam em mainframes ou servidores de médio porte Conectores permitem o acesso a sist. legados 13 Conectores Integram diversos sistemas à plataforma Fornecido pelo fabricante do sistema legado ou por terceiros Para desenvolver um conector geralmente é necessário escrever código nativo para a plataforma do sistema legado e integrar ao Java usando JNI (Java Native Interface), CORBA ou Sockets 14 Java Messaging Service (JMS) Serviço para comunicação através de mensagens assíncronas (eventos) JavaMail API para envio e recepção de e-mails Java Transaction API (JTA) API para gerenciamento de transações Java Persistence API () API que mapeia os dados das aplicações corporativas de/para banco de dados 15 Distribuição de aplicações corporativas Arquivos que compõem uma aplicação Web são empacotados num arquivo WAR Arquivos necessários para implantar s devem ser empacotados em arquivos JAR Uma aplicação corporativa completa é empacotada em um arquivo EAR Contém uma ou mais aplicações Web em arquivos WAR Contém um ou mais arquivos JAR com os componentes da aplicação, aplicações cliente e outras bibliotecas utilizadas 16 Implantação de aplicações corporativas Arquivos EAR são carregados no servidor Java EE, que abre o pacote e coloca a aplicação em execução Conteúdo de arquivos é WAR implantado no contêiner Web Componentes contidos nos arquivos JAR são implantados no contêiner A implantação é efetuada com base em informações obtidas de descritores em XML e de anotações feitas nas próprias classes Java 17 Java Server Faces é um framework para construção de aplicações Web em Java é baseado em componentes para Web Adota o padrão Modelo-Visão-Controlador Utiliza JavaBeans gerenciados (com injeção de dependência) e é integrado a JSP e Servlets Incorpora o conceito de eventos na navegação pela Web, com tratamento no servidor Provê ainda APIs para controle de navegação na Web, validação de entrada, conversão de valores e suporte a localização e acessibilidade 18 3

Componentes O fornece um conjunto de componentes comumente usados em páginas Web: link, tabela, botão, combo box, caixa de texto, etc. Há várias bibliotecas de componentes comerciais ou gratuitas disponíveis para uso (MyFaces, RichFaces, WoodStock, etc.) Componentes são representados como tags em uma página JSP e posteriormente convertidos para o código HTML equivalente 19 Modelo de eventos Uma ação na página Web como clicar um botão ou selecionar uma opção em um combo box resulta em um evento O evento pode ser associado a um método de um bean gerenciado, executado no servidor Retorno do método tratador do evento pode determinar o fluxo de navegação da aplicação O uso de eventos torna o desenvolvimento de aplicações Web semelhante ao desktop 20 Facelets Forma padrão de implementarviews no 2.0 Baseado em XHTML Permite construir uma árvore de componentes e referenciar beans gerenciados Beans Gerenciados São beans usados na aplicação Seu ciclo de vida é gerenciado pelo servidor 21 Escopo dos Beans Gerenciados Escopo Ciclo de Vida Application A mesma instância é compartilhada por todos os usuários da aplicação Session Uma instância por sessão (cada usuário possui a sua instância particular) Conversation Instâncias criadas/destruídas pela aplicação para diferenciar janelas/abas Request Instância criada/destruída a cada requisição enviada ao servidor Dependent Instância criada/removida quando o objeto que a referencia é criado/removido 22 Exemplo: Facelet index.xhtml <?xml version='1.0' encoding='utf-8'?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"> <head> <title>adivinhe o número</title> </head> <body> <h5>entre com um número de 0 a 9:</h5> <h:form> <h:inputtext id="usernumber" size="2" O facelet possui um formulário com um campo de texto, no qual deve ser digitado um número. Ao clicar no botão Enviar, o número é armazenado no atributo usernumber de UserNumberBean e o navegador exibe o facelet response. maxlength="2" value="#{usernumberbean.usernumber" /> <h:commandbutton id="submit" value="enviar" action="response" /> </h:form> </body> </html> 23 Exemplo: Facelet response.xhtml <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <head> <title>resposta</title> </head> <body> <h4> <h:outputtext escape="false" value= "#{UserNumberBean.response"/> </h4> <h:form> O facelet de resposta tem um campo de texto no qual é mostrado o valor retornado pelo método getresponse do bean gerenciado. O botão Voltar retorna ao facelet index. <h:commandbutton id="back" value="voltar" action="index" /> </h:form> </body> </html> 24 4

Exemplo: Bean gerenciado UserNumberBean @ManagedBean(name="UserNumberBean") @SessionScoped // sessão -->uma instância por usuário public class UserNumberBean { Integer randomint; // armazena número sorteado Integer usernumber; // armazena número digitado pelo usuário public UserNumberBean() { // construtor; sorteia número aleatório Random randomgr = new Random(); randomint = new Integer(randomGR.nextInt(10)); System.out.println("Número sorteado: " + randomint); public void setusernumber(integer usernumber) { this.usernumber = usernumber; // armazena o número digitado... 25... public Integer getusernumber() { return usernumber; // retorna o útimo número digitado public String getresponse() { if ((usernumber!= null) && (usernumber. compareto(randomint) == 0)) { // se número digitado == gerado FacesContext context = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession)context.getExternalContext(). getsession(false); // obtém o objeto de sessão session.invalidate(); // destrói a sessão return "Você acertou!"; // resposta = acertou else { // resposta = errou return "<p>desculpe, o número não é " + usernumber + "</p>" + "<p>tente novamente</p>"; 26 Enterprise JavaBeans Integra um modelo de componentes de negócio à arquitetura Cria uma camada composta de beans especializados, não-gráficos Beans rodam em servidores Componentes São objetos Java escaláveis e reutilizáveis Utilizam anotações/arquivos XML para informar ao contêiner como devem ser gerenciados 27 Comunicação s interagem com clientes remotos através de interfaces/beans anotados com @Remote Beans podem ser acessados remotamente por: Aplicações Java usando RMI/IIOP Aplicações CORBA usando IIOP Clientes Web via páginas JSP ou Servlets Clientes locais podem interagir com os s utilizando injeção de dependência ou interfaces/ beans anotados com @Local 28 Tipos de Enterprise Beans Session Beans Executam uma tarefa durante uma sessão de interação entre o Bean o cliente Entity Beans Representam dados armazenados em BDs Persistência transparente Message-Driven Beans São consumidores de mensagens JMS Mensagens tratadas ao serem recebidas 29 Session Bean Representam um cliente em particular no servidor ou seja, o bean não é compartilhado entre os clientes O cliente invoca métodos do bean para acessar o servidor o bean age como uma extensão do cliente Pode ser acessado remotamente quando possui a anotação @Remote na classe do bean ou em uma interface que ela implementa 30 5

Estado dos Session Beans Stateless Session Bean Não possui estado que o ligue a um cliente Instâncias diferentes são equivalentes se inativas Stateful Session Bean Armazena estado durante a sessão de um cliente (entre invocações sucessivas) O estado não é persistido (é transiente) Exemplo de Stateless Session Bean @Stateless public class HelloWorldSessionBean{ public String hello(){ return Hello World ; A anotação @Stateless indica que a classe anotada é um Stateless Session Bean 31 32 Stateless Session Bean com suporte a clientes remotos Anotando a interface com @Remote @Remote public interface Hello{ public String hello(); @Stateless public class HelloWorldSessionBean implements Hello{ public String hello(){ return Hello World ; 33 Stateless Session Bean com suporte a clientes remotos Anotando classe com @Remote public interface Hello{ public String hello(); @Stateless @Remote(Hello.class) public class HelloWorldSessionBean implements Hello{ public String hello(){ return Hello World ; 34 Ciclo de vida dos Stateless Session Beans decide quando é necessário criar mais instâncias Instância do Bean não existe Pool de Beans decide quando não necessita mais das instâncias Cliente invoca método 35 Exemplo de Stateful Session Bean @Stateful @Remote(Count.class) public class CountBean implements Count { private int count; public int getcount() { return this.count; public void setcount(int count) { this.count = count; @Remove public void remove() { A anotação @Stateful indica que a classe é um Stateful Session Bean A anotação @Remove indica que o bean deve ser removido após a execução do método anotado 36 6

Ciclo de vida dos Stateful Session Beans Cliente obtém uma referência da interface de negócio desativa bean Instância do Bean não existe Pronto Passivo Cliente invoca método de remoção ou ocorre timeout Cliente invoca método Cliente invoca método Message-Driven Beans Consomem mensagens de uma fila ou associadas a um determinado tópico Podem receber mensagens de uma ou de múltiplas fontes Não possuem estado nem interfaces remotas Beans são anotados com @MessageDriven Sua interface depende do serviço de mensagens utilizado Geralmente é usado JMS (Java Message Service) 37 38 Exemplo de Message-Driven Bean @MessageDriven(mappedName="jms/Queue") public class SimpleMessageBean implements MessageListener { public void onmessage (Message msg) { // utiliza a mensagem O bean utiliza o JMS, que requer a implementação da interface javax.jms.messagelistener A fila de mensagens especificada na anotação @MessageDriven é mantida num provedor JMS Ciclo de vida dos Message-Driven Beans decide quando criar instâncias Instância do Bean não existe Pronto decide quando destruir instâncias onmessage() 39 40 Entity Beans São POJOS (Plain Old Java Objects) Permitem o acesso compartilhado a dados armazenados em um BD Dados são materializados na forma de objetos (mapeamento objeto-relacional) Bean = tabela de um BD relacional Instância do Bean = linha da tabela Identificador do Bean = chave primária Utilizam a (Java Persistence API) para controlar a persistência dos dados 41 Java Persistence API Modelo simplificado e leve de persistência Pode ser utilizado tanto em contêiners JavaEE quanto em aplicações JavaSE Permite utilização de herança e polimorfismo Permite criação de testes independentes do contêiner quando utilizado com JavaEE Possui anotações para definição de mapeamento objeto-relacional Principais implementações da Hibernate Oracle TopLink 42 7

Entidade No uma entidade é um objeto comum Java (um POJO) que pode ser gravado pelo mecanismo de persistência Uma classe que representa uma entidade é anotada com @Entity Toda entidade deve possuir um construtor sem argumentos Toda entidade deve possuir uma chave primária, simples ou composta, identificada pela anotação @Id Chaves compostas devem ser representadas por uma classe Java em separado 43 Exemplo de Entidade @Entity public class Conta { @Id private Long numconta; private String nometitular; private long saldo; public Conta() { //Construtor sem argumentos é obrigatório public void setnumconta(long numconta) { this. numconta = numconta; public Long getnumconta() { return this.numconta; //Métodos getters e setters para os outros atributos 44 Anotações de Relacionamento Especificam relacionamento entre entidades e a cardinalidade da relação @OneToOne @OneToMany @ManyToOne @ManyToMany Ciclo de vida das entidades refresh() managed persist() merge() remove() new Fim do contexto de persistência detached new() persist() removed 45 46 Estados new: Estado da entidade após ser criada. managed: Entidade persistida, com id associado a um contexto de persistência. removed: marcada para ser removida do BD. detached: Entidade possui um id persistente mas não possui um contexto de persistência. Operações new(): Cria nova entidade persist(): Persiste uma entidade refresh(): Atualiza o estado de uma entidade merge(): Sincroniza entidade desacoplada Entity Manager Controla o ciclo de vida das entidades Possui métodos para buscar, salvar, remover e atualizar estado das entidades Referência para o Entity Manager é obtida com injeção de dependências, utilizando a anotação @PersistenceContext 47 48 8