Você está na página 1de 9

Java EE

Unidade III
n  Plataforma Java Enterprise Edition
n  Adiciona ao Java suporte para:
Componentes no Java EE n  Desenvolvimento de Aplicações Web:
JSP, Servlets e JSF
n  Componentes de Negócio: EJB
n  Java EE
n  Interconexão com Sistemas Legados:
n  JSF
Java Connectors
n  EJB
n  Fornece diversas APIs para:
n  JPA
n  Comunicação: JMS, JavaMail
n  Gerenciamento de Transações: JTA
n  Persistência de Dados: JPA
n  … entre outros. 2

Java EE Java EE
n  Arquitetura do Java EE n  Camadas do Java EE
n  Camada Cliente
n  Clientes Web (navegadores, etc.)
n  Aplicações Clientes
n  Camada Web
n  Páginas JSP, JSF, Servlets e JavaBeans
n  Camada de Negócios
n  Componentes EJB
n  Camada de Sist. de Informações Empresariais
n  Integração com BDs e outros sist. legados
© http://java.sun.com 3 4

Java EE Java EE
n  Arquitetura do Java EE n  Camada Cliente
n  Clientes Web
n  Acessam a camada Web, que gera as
páginas visualizadas no navegador
n  Utilizam protocolos HTTP e HTTPS

n  Aplicações Clientes

n  Aplicações Java ou CORBA (multi-linguagem)

n  Acessam a camada de negócios diretamente

n  Interagem através do protocolo IIOP

© http://java.sun.com 5 6

1
Java EE Java EE
n  Arquitetura do Java EE n  Servidor Java EE
n  Possui duas camadas:
n  Camada Web

n  Composta por páginas JSP e JSF,


Servlets e JavaBeans
n  Acessada pelos clientes Web

n  Camada de Negócios

n  Formada por componentes EJB

n  Usada pela camada Web e por


aplicações clientes
© http://java.sun.com 7 8

Java EE Java EE
n  Contêineres do Servidor Java EE n  Servidor Java EE: Contêiners Web e EJB

© http://java.sun.com

© http://java.sun.com
9 10

Java EE Java EE
n  Servidor Java EE n  Java Server Pages (JSP)
n  Existem dois tipos de contêiner n  Permite a geração dinâmica de conteúdo Web
n  Contêiner Web: hospeda páginas JSP e JSF, n  Código Java é inserido em páginas HTML ou
Servlets e JavaBeans XML para gerar conteúdo dinâmico
n  Contêiner EJB: gerencia a execução dos n  Geração do conteúdo baseada em parâmetros
Enterprise JavaBeans passados na URL, na identificação do usuário,
n  Nem todos os servidores fornecem os dois
dados de um BD ou de JavaBeans, etc.
tipos de contêiner n  Requer um servidor Web compatível com

n  Ex.: Tomcat possui apenas contêiner Web


Java EE para executar o código JSP
n  Cliente Web não tem acesso ao código JSP
n  JSP, ao ser compilado, gera um servlet
11 12

2
Java EE Java EE
n  Servlets n  Java Server Faces (JSF)
n  São classes Java que implementam a interface n  Suporte para criação de aplicações Web
javax.servlet.Servlet utilizando componentes
n  Instanciados e mantidos em execução no n  Facilita o desenvolvimento de aplicações Web
servidor n  Fornece componentes para criação de páginas
n  Processam requisições enviadas para uma URI n  Efetua tratamento de eventos gerados pela
n  Servlet HTTP interação do usuário com o navegador Web
n  Recebe requisições via HTTP[S]
n  Possui métodos que tratam cada tipo de
mensagem do protocolo (GET, POST, etc.)
n  Geram saída exibida no browser (ex: HTML)
13 14

Java EE Java EE
n  Enterprise JavaBeans (EJB) n  Arquitetura do Java EE
n  Componentes que rodam no servidor
n  Acessam os sistemas legados da empresa
para implementar regras de negócio
n  Ciclo de vida gerenciado pelo contêiner

n  Persistência de dados efetuada pela JPA


(Java Persistence API)

15 © http://java.sun.com 16

Java EE Java EE
n  Camada de Sistemas de Informações n  Conectores
Empresariais (EIS) n  Integram diversos sistemas à plataforma
n  Usada pelos componentes EJB da camada de Java EE
negócio p/ acesso a software de infraestrutura
n  Fornecido pelo fabricante do sistema legado
n  Banco de Dados
n  Monitores de Transações
ou por terceiros
n  Enterprise Resource Planning (ERP) n  Para desenvolver um conector geralmente é
n  Customer Relationship Management (CRM) necessário escrever código nativo para a
n  ... e outros sistemas legados plataforma do sistema legado e integrar ao
n  Estes sistemas geralmente rodam em Java usando JNI (Java Native Interface),
mainframes ou servidores de médio porte CORBA ou Sockets
n  Conectores permitem o acesso a sist. legados
17 18

3
Java EE Java EE
n  Java Messaging Service (JMS) n  Distribuição de aplicações corporativas
n  Serviço
para comunicação através de n  Arquivos que compõem uma aplicação Web
mensagens assíncronas (eventos) são empacotados num arquivo WAR
n  JavaMail n  Arquivos necessários para implantar EJBs
devem ser empacotados em arquivos JAR
n  API para envio e recepção de e-mails
n  Uma aplicação corporativa completa é
n  Java Transaction API (JTA) empacotada em um arquivo EAR
n  API para gerenciamento de transações n  Contém uma ou mais aplicações Web em
n  Java Persistence API (JPA) arquivos WAR
n  APIque mapeia os dados das aplicações n  Contém um ou mais arquivos JAR com os
corporativas de/para banco de dados componentes EJB da aplicação, aplicações
19 cliente e outras bibliotecas utilizadas 20

Java EE JSF
n  Implantação de aplicações corporativas n  Java Server Faces é um framework para
n  Arquivos EAR são carregados no servidor Java construção de aplicações Web em Java
EE, que abre o pacote e coloca a aplicação em n  JSF é baseado em componentes para Web
execução n  Adota o padrão Modelo-Visão-Controlador
n  Conteúdo de arquivos é WAR implantado no
n  Utiliza JavaBeans gerenciados (com injeção de
contêiner Web dependência) e é integrado a JSP e Servlets
n  Componentes EJB contidos nos arquivos
n  Incorpora o conceito de eventos na navegação
JAR são implantados no contêiner EJB pela Web, com tratamento no servidor
n  A implantação é efetuada com base em
n  Provê ainda APIs para controle de navegação
informações obtidas de descritores em XML e na Web, validação de entrada, conversão de
de anotações feitas nas próprias classes Java valores e suporte a localização e acessibilidade
21 22

JSF JSF
n  Componentes JSF n  Modelo de eventos
n  O JSF fornece um conjunto de componentes n  Uma ação na página Web – como clicar um
comumente usados em páginas Web: link, botão ou selecionar uma opção em um combo
tabela, botão, combo box, caixa de texto, etc. box – resulta em um evento
n  Há várias bibliotecas de componentes – n  O evento pode ser associado a um método de
comerciais ou gratuitas – disponíveis para uso um bean gerenciado, executado no servidor
(MyFaces, RichFaces, WoodStock, PrimeFace, n  Retorno do método tratador do evento pode
etc.) determinar o fluxo de navegação da aplicação
n  Componentes são representados como tags n  O uso de eventos torna o desenvolvimento de
em uma página JSP e posteriormente aplicações Web semelhante ao desktop
convertidos para o código HTML equivalente 23 24

4
JSF JSF
n  Facelets n  Escopo dos Beans Gerenciados JSF
n  Forma padrão de implementarviews no JSF2.0 Escopo Ciclo de Vida
n  Baseado em XHTML
Application A mesma instância é compartilhada por
todos os usuários da aplicação
n  Permite construir uma árvore de componentes Session Uma instância por sessão (cada usuário
e referenciar beans gerenciados JSF possui a sua instância particular)
Conversation Instâncias criadas/destruídas pela
n  Beans Gerenciados aplicação para diferenciar janelas/abas
n  Sãobeans usados na aplicação JSF Request Instância criada/destruída a cada
n  Seuciclo de vida é gerenciado pelo servidor requisição enviada ao servidor
Dependent Instância criada/removida quando o objeto
Java EE que a referencia é criado/removido
25 26

JSF JSF
n  Exemplo: Facelet index.xhtml n  Exemplo: Facelet response.xhtml
<?xml version='1.0' encoding='UTF-8' ?> O facelet possui um
formulário com um <html xmlns="http://www.w3.org/1999/xhtml" O facelet de resposta
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> tem um campo de texto
xmlns:h="http://java.sun.com/jsf/html" campo de texto, no
qual deve ser <head> no qual é mostrado o
xmlns:ui="http://java.sun.com/jsf/facelets" <title>Resposta</title> valor retornado pelo
xmlns:f="http://java.sun.com/jsf/core"> digitado um número.
Ao clicar no botão </head> método getResponse
<head> do bean gerenciado. O
<title>Adivinhe o número</title> Enviar, o número é
armazenado no <body> botão Voltar retorna ao
</head> atributo userNumber facelet index.
<body> <h4>
de UserNumberBean <h:outputText escape="false" value=
<h5>Entre com um número de 0 a 9:</h5> e o navegador exibe
<h:form> o facelet response. "#{UserNumberBean.response}"/>
<h:inputText id="userNumber" size="2" </h4>
maxlength="2" value="#{UserNumberBean.userNumber}" /> <h:form>
<h:commandButton id="submit" value="Enviar" <h:commandButton id="back" value="Voltar" action="index" />
action="response" /> </h:form>
</h:form> </body>
</body> </html>
</html>
27 28

JSF JSF
...
n  Exemplo: Bean gerenciado UserNumberBean public Integer getUserNumber() {
@ManagedBean(name="UserNumberBean") return userNumber; // retorna o útimo número digitado
@SessionScoped // sessão -->uma instância por usuário }
public class UserNumberBean {
Integer randomInt; // armazena número sorteado public String getResponse() {
Integer userNumber; // armazena número digitado pelo usuário if ((userNumber != null) && (userNumber. compareTo(randomInt)
== 0)) { // se número digitado == gerado
public UserNumberBean() { // construtor; sorteia número aleatório FacesContext context = FacesContext.getCurrentInstance();
Random randomGR = new Random(); HttpSession session = (HttpSession)context.getExternalContext().
randomInt = new Integer(randomGR.nextInt(10)); getSession(false); // obtém o objeto de sessão
System.out.println("Número sorteado: " + randomInt); session.invalidate(); // destrói a sessão
} return "Você acertou!"; // resposta = acertou
} else { // resposta = errou
public void setUserNumber(Integer userNumber) { return "<p>Desculpe, o número não é " + userNumber + "</p>"
this.userNumber = userNumber; // armazena o número digitado + "<p>Tente novamente</p>";
} }
... }
}
29 30

5
EJB EJB
n  Enterprise JavaBeans n  Comunicação
n  Integra um modelo de componentes de negócio n  EJBs interagem com clientes remotos através de
à arquitetura Java EE interfaces/Beans anotados com @Remote
n  Cria uma camada composta de beans n  Beans podem ser acessados remotamente por:
especializados, não-gráficos n  Aplicações Java usando RMI/IIOP
n  Beans rodam em servidores Java EE n  Aplicações CORBA usando IIOP
n  Componentes EJB n  Clientes Web via páginas JSP ou Servlets
n  São objetos Java escaláveis e reutilizáveis n  Clientes locais podem interagir com os EJBs
n  Utilizam anotações/arquivos XML para informar utilizando injeção de dependência ou interfaces/
ao contêiner como devem ser gerenciados beans anotados com @Local
31 32

EJB EJB
n  Tipos de Enterprise Beans n  Session Bean
n  Session Beans n  Representam um cliente em particular no
n  Executam uma tarefa durante uma sessão servidor – ou seja, o bean não é
de interação entre o Bean o cliente compartilhado entre os clientes
n  Message-Driven Beans n  O cliente invoca métodos do bean para

n  São consumidores de mensagens JMS


acessar o servidor – o bean age como uma
extensão do cliente
n  Mensagens tratadas ao serem recebidas
n  Pode ser acessado remotamente quando
n  Entity Beans
possui a anotação @Remote na classe do
n  Representam dados armazenados em BDs bean ou em uma interface que ela implementa
n  Persistência transparente

33 34

EJB EJB
n  Estado dos Session Beans n  Exemplo de Stateless Session Bean
n  Stateless Session Bean
@Stateless
n  Não possui estado que o ligue a um cliente public class HelloWorldSessionBean{
n  Instâncias diferentes são equivalentes se public String hello(){
inativas return “Hello World”;
}
n  Stateful Session Bean }
n  Armazena estado durante a sessão de um
cliente (entre invocações sucessivas) n  Aanotação @Stateless indica que a classe
n  O estado não é persistido (é transiente) anotada é um Stateless Session Bean
35 36

6
EJB EJB
n  Stateless Session Bean com suporte a n  Stateless Session Bean com suporte a
clientes remotos clientes remotos
n  Anotando a interface com @Remote n  Anotando classe com @Remote
@Remote public interface Hello{
public interface Hello{ public String hello();
public String hello(); }
}
@Stateless
@Stateless @Remote(Hello.class)
public class HelloWorldSessionBean implements Hello{ public class HelloWorldSessionBean implements Hello{
public String hello(){ public String hello(){
return “Hello World”; return “Hello World”;
} }
} 37 } 38

EJB EJB
n  Ciclo de vida dos Stateless Session Beans n  Exemplo de Stateful Session Bean
@Stateful
@Remote(Count.class)
Instância do Bean public class CountBean implements Count {
não existe private int count;
public int getCount() { return this.count; }
public void setCount(int count) { this.count = count; }
Contêiner Contêiner
decide quando decide quando
@Remove
é necessário criar não necessita mais public void remove() { }
mais instâncias das instâncias
}
n  A anotação @Stateful indica que a classe é um
Cliente Stateful Session Bean
Pool de Beans invoca
método
n  A anotação @Remove indica que o bean deve ser
removido após a execução do método anotado
39 40

EJB EJB
n  Ciclo de vida dos Stateful Session Beans n  Message-Driven Beans
n  Consomem mensagens de uma fila ou
Instância do Bean associadas a um determinado tópico
não existe n  Podem receber mensagens de uma ou de
Cliente obtém uma
referência da
Cliente invoca
método de remoção
múltiplas fontes
interface de negócio ou ocorre timeout n  Não possuem estado nem interfaces remotas
Cliente
n  Beans são anotados com @MessageDriven
Pronto invoca
método n  Sua interface depende do serviço de
Contêiner Cliente invoca mensagens utilizado
n  Geralmente é usado JMS (Java Message
desativa bean método

Service)
Passivo
41 42

7
EJB EJB
n  Exemplo de Message-Driven Bean n  Ciclo de vida dos Message-Driven Beans
@MessageDriven(mappedName="jms/Queue")
public class SimpleMessageBean implements MessageListener {
public void onMessage (Message msg) { Instância do Bean
// utiliza a mensagem não existe
}
} Contêiner Contêiner

O bean utiliza o JMS, que requer a implemen-


decide quando decide quando
n  criar instâncias destruir instâncias

tação da interface javax.jms.MessageListener


n  A fila de mensagens especificada na anotação
@MessageDriven é mantida num provedor JMS Pronto onMessage()

43 44

EJB JPA
n  Entity Beans n  Java Persistence API
n  São POJOS (Plain Old Java Objects) n  Modelo simplificado e leve de persistência
n  Pode ser utilizado tanto em contêiners JavaEE
n  Permitem o acesso compartilhado a dados
armazenados em um BD quanto em aplicações JavaSE
n  Permite utilização de herança e polimorfismo
n  Dados são materializados na forma de objetos
n  Permite criação de testes independentes do
(mapeamento objeto-relacional) contêiner quando utilizado com JavaEE
n  Bean = tabela de um BD relacional n  Possui anotações para definição de
n  Instância do Bean = linha da tabela mapeamento objeto-relacional
n  Identificador do Bean = chave primária n  Principais implementações da JPA
n  Utilizam a JPA (Java Persistence API) para n  Hibernate
controlar a persistência dos dados n  Oracle TopLink
45 46

JPA JPA
n  Entidade n  Exemplo de Entidade JPA
n  No JPA uma entidade é um objeto comum
Java (um POJO) que pode ser gravado pelo @Entity
public class Conta {
mecanismo de persistência @Id
n  Uma classe que representa uma entidade é private Long numConta;
anotada com @Entity private String nomeTitular;
n  Toda entidade deve possuir um construtor private long saldo;
public Conta() { } //Construtor sem argumentos é obrigatório
sem argumentos public void setNumConta(Long numConta) {
n  Toda entidade deve possuir uma chave this. numConta = numConta;
primária, simples ou composta, identificada }
pela anotação @Id public Long getNumConta() { return this.numConta; }
n  Chaves compostas devem ser representadas //Métodos getters e setters para os outros atributos
}
por uma classe Java em separado
47 48

8
JPA JPA
n  Anotações de Relacionamento n  Ciclo de vida das entidades
n  Especificamrelacionamento entre entidades e
a cardinalidade da relação new
new()

persist()
n  @OneToOne
refresh()

n  @OneToMany remove()

n  @ManyToOne managed removed


persist()
n  @ManyToMany
Fim do contexto de
persistência
merge()

detached

49 50

JPA JPA
n  Estados n  Entity Manager
n  new: Estado da entidade após ser criada. n  Controla o ciclo de vida das entidades
n  managed: Entidade persistida, com id
n  Possui métodos para buscar, salvar, remover
associado a um contexto de persistência.
n  removed: marcada para ser removida do BD.
e atualizar estado das entidades
n  detached: Entidade possui um id persistente n  Referência para o Entity Manager é obtida
mas não possui um contexto de persistência. com injeção de dependências, utilizando a
n  Operações anotação @PersistenceContext
n  new(): Cria nova entidade
n  persist():Persiste uma entidade
n  refresh(): Atualiza o estado de uma entidade
n  merge(): Sincroniza entidade desacoplada
51 52

Você também pode gostar