Escolar Documentos
Profissional Documentos
Cultura Documentos
Livro
Livro
Web II
Prof. Cristiano Roberto Franco
2016
Copyright © UNIASSELVI 2016
Elaboração:
Prof. Cristiano Roberto Franco
005.276
F825p Franco, Cristiano Roberto
192 p. : il.
ISBN 978-85-7830-950-3
Impresso por:
Apresentação
O mundo mudou! Enquanto você lê esse texto, muito provavelmente
na tela de seu computador desktop, notebook ou dispositivo móvel, milhões de
pessoas ao redor do globo estão trafegando dados digitalmente transformados
na autoestrada da informação conhecida como internet. Você não usa mais
essa autoestrada somente para estudar e trabalhar, você a usa para comprar,
viajar, ouvir música, ver TV, filmes e seriados, fazer operações bancárias,
pagar contas, falar com amigos e familiares distantes, namorar e até mesmo
para compartilhar com o mundo que você fez uma omelete no café da manhã.
E você quer poder fazer tudo isso a qualquer hora e de qualquer lugar.
III
Apesar de o JEE ter como um dos focos principais a facilidade de
desenvolvimento, a complexidade intrínseca do ambiente para o qual foi
projetado e o número de tecnologias envolvidas o tornam relativamente
denso. Tenha em mente que você não está estudando uma tecnologia para
fazer um “sitezinho para seu tio que tem uma quitanda”, mas sim para
construir aplicações distribuídas, robustas, portáveis e seguras.
Lembre-se de que você não está sozinho nesta jornada. O meu trabalho
ao longo deste caderno é tentar facilitar ao máximo a compreensão das
tecnologias envolvidas no JEE. Para atingir tal objetivo, farei uso de exemplos
pequenos e simples na demonstração de cada tecnologia, combinando-os em
um exemplo maior e mais complexo como autoatividade no final de cada
seção. Tal metodologia de ensino e aprendizagem é sugerida por Nicholas
Negroponte do MIT Media Lab, em seu artigo Learning by Doing: Don´t
dissect the frog. Built it (NEGROPONTE, 2004).
Bons códigos!
IV
NOTA
Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há
novidades em nosso material.
O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova
diagramação no texto, aproveitando ao máximo o espaço da página, o que também
contribui para diminuir a extração de árvores para produção de folhas de papel, por exemplo.
Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa
continuar seus estudos com um material de qualidade.
V
VI
Sumário
UNIDADE 1 – INTRODUÇÃO AO JAVA ENTERPRISE EDITION................................................ 1
1 INTRODUÇÃO...................................................................................................................................... 3
2 PRINCIPAIS TECNOLOGIAS............................................................................................................ 7
2.1 A ARQUITETURA DOS CONTAINERS....................................................................................... 9
RESUMO DO TÓPICO 1........................................................................................................................ 11
AUTOATIVIDADE.................................................................................................................................. 12
VII
3 JAVA PERSISTENCE API (JPA).......................................................................................................... 98
4 CONCEITOS E INTERFACES DO JPA............................................................................................. 99
4.1 MAPEAMENTO DE ENTIDADES.............................................................................................. 100
4.2 RELACIONAMENTOS ENTRE ENTIDADES........................................................................... 111
LEITURA COMPLEMENTAR.............................................................................................................. 114
RESUMO DO TÓPICO 2...................................................................................................................... 125
AUTOATIVIDADE................................................................................................................................ 127
REFERÊNCIAS........................................................................................................................................ 185
VIII
UNIDADE 1
INTRODUÇÃO AO JAVA
ENTERPRISE EDITION
OBJETIVOS DE APRENDIZAGEM
Ao final desta unidade, você será capaz de:
PLANO DE ESTUDOS
Esta unidade de ensino está dividida em três tópicos, sendo que no final
de cada um deles, você encontrará atividades que contribuirão para a
apropriação dos conteúdos.
1
2
UNIDADE 1
TÓPICO 1
1 INTRODUÇÃO
O Java Enterprise Edition (JEE) inicialmente evoluiu como uma plataforma
de desenvolvimento para aplicações enterprise que focava em robustez,
webservices e facilidade. Continuamente moldado através do feedback fornecido
pelo Java Community Process (JCP), o JEE hoje representa um padrão universal
para TI empresarial, facilitando o desenvolvimento, instalação e gerenciamento
de aplicações multi-tier e server-centric. O sucesso na adoção da plataforma é
inegável. Em maio de 2013, os componentes JEE6 da Oracle e outros fornecedores
já contabilizavam 50 milhões de downloads (ORACLE, 2014).
E
IMPORTANT
3
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
4
TÓPICO 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION E PRINCIPAIS TECNOLOGIAS
Servlets e Java Server Pages, que não fazem parte do escopo deste caderno. Se
considerarmos a layer, esta parte fica alocada no JEEServer.
3) Business Tier: representa a lógica de negócios da aplicação, aqui implementada
em Enterprise Beans individuais para a aplicação cliente e para as páginas web.
Em termos de layer, ainda estamos no JEEServer.
4) Enterprise Information Server (EIS) Tier: representa as fontes de dados que as
aplicações acessam através da business tier, normalmente um SGBDR. Esta fonte
de dados também pode ser alguma aplicação legada já existente no ambiente
corporativo. Agora estamos na layer Database Server.
E
IMPORTANT
5
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
6
TÓPICO 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION E PRINCIPAIS TECNOLOGIAS
E
IMPORTANT
2 PRINCIPAIS TECNOLOGIAS
Como descrevemos anteriormente, o servidor de aplicação JEE tem
como principal característica o oferecimento de serviços para as aplicações nele
instalados. Serviços estes geralmente relacionados com requisitos não funcionais
como escalabilidade, remotabilidade etc. Para cada um destes serviços existe uma
ou mais tecnologias que, trabalhando individualmente ou em conjunto, abstraem o
desenvolvedor de detalhes específicos da implementação do mesmo.
7
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
E
IMPORTANT
8
TÓPICO 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION E PRINCIPAIS TECNOLOGIAS
9
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
Perceba que o JEE Server possui dois containers, o Web Container e o EJB
Container. A compreensão do funcionamento destes dois containers é fundamental
para que se faça bom uso dos serviços do servidor de aplicação e da plataforma JEE.
E então...que tal pôr nossas mãos à obra? Como disse Linus Torvalds,
criador do sistema operacional Linux: “Talk is cheap... show me the code”. No
próximo tópico aprenderemos como configurar e preparar o ambiente que dará
suporte ao desenvolvimento JEE.
Bons estudos!
10
RESUMO DO TÓPICO 1
Neste tópico você viu que:
• A Web Tier pode ser implementada em Servlet Containers, que são uma
espécie de “mini” servidores de aplicação mais leves e ágeis, entretanto não
disponibilizam todos os serviços dos servidores de aplicação.
• Para cada um destes serviços existe uma ou mais tecnologias que, trabalhando
individualmente ou em conjunto, abstraem o desenvolvedor de detalhes
específicos da implementação do mesmo.
11
AUTOATIVIDADE
12
UNIDADE 1
TÓPICO 2
CONSTRUÇÃO DO AMBIENTE DE
DESENVOLVIMENTO E EPLOYMENT
1 INTRODUÇÃO
NOTA
13
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
FONTE: O autor
Caso a aba não esteja aparecendo para você, é possível adicioná-la através da
seleção do menu Window -> Show View -> Other. Você deve digitar a palavra server,
de modo que esta opção fique acessível para seleção, conforme a figura a seguir.
14
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
Uma vez que a aba está disponível, devemos clicar com o botão direito
do mouse e selecionar a opção New - > Server. Esta ação abrirá um novo diálogo,
onde devemos selecionar a opção destacada na Figura 6.
FONTE: O autor
15
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
Você deverá criar um novo runtime para o servidor, através das telas
mostradas nas figuras 8 e 9. Você deve deixar a configuração exatamente como
mostrado nas figuras, com exceção do Execution Environment, que deverá
respeitar a versão do Java utilizada por você na IDE, e do caminho de instalação
do servidor, ambas na Figura 9.
16
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
FONTE: O autor
17
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
FONTE: O autor
18
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
2 INSTALAÇÃO DO NETBEANS
O NetBeans é uma IDE desenvolvida pela Oracle que permite que você
desenvolva aplicações desktop, web e mobile em Java, bem como aplicações com
HTML5, JavaScript e CSS. A IDE possui ainda uma vasta gama de ferramentas para
desenvolvedores PHP e C/C++. É gratuita, open source e tem uma grande comunidade
de usuários e desenvolvedores ao redor do mundo (NETBEANS, 2015).
FONTE: O autor
19
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
20
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
FONTE: O autor
Uma vez que a instalação foi concluída, ao abrir a IDE nos deparamos
com a tela mostrada na Figura 16. Não é objetivo deste caderno a explicação das
funcionalidades do NetBeans, visto que inclusive utilizaremos o Eclipse para o
desenvolvimento de nossos exemplos. O Eclipse é melhor em algumas atividades
e o NetBeans em outras. Com o tempo e a utilização, você elegerá a sua favorita.
21
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
ATENCAO
3 INTEGRAÇÃO WILDFLY-MYSQL
Conforme K19 (2013), aplicações Java se comunicam com banco
de dados através de conexões JDBC. Para estabelecer uma conexão JDBC,
algumas informações como usuário, senha e base de dados são necessárias. As
configurações relativas às conexões JDBC podem ser definidas nas aplicações ou
nos servidores de aplicação. Em um servidor de aplicação, as configurações JDBC
são definidas em componentes chamados Data Sources. Os Data Sources permitem
que uma única configuração JDBC seja utilizada por diversas aplicações. Eles
22
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
23
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
FONTE: O autor
24
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
FONTE: O autor
25
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
4 INTEGRAÇÃO GLASSFISH-MYSQL
Neste tópico, demonstraremos de que forma fazer a integração entre o
MySQL e o Servidor de aplicações Glassfish através do NetBeans.
ATENCAO
FONTE: O autor
26
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
ATENCAO
27
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
28
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
29
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
FONTE: O autor
30
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
FONTE: O autor
31
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
Ao clicar no pool recém criado, você será levado a uma tela que permite o
teste do mesmo através do botão Ping. Se o pool estiver funcionando, haverá uma
mensagem informando que o ping foi bem sucedido (Figura 30).
FONTE: O autor
32
TÓPICO 2 | CONSTRUÇÃO DO AMBIENTE DE DESENVOLVIMENTO E EPLOYMENT
FONTE: O autor
ATENCAO
33
RESUMO DO TÓPICO 2
Neste tópico você viu que:
34
AUTOATIVIDADE
35
36
UNIDADE 1
TÓPICO 3
1 INTRODUÇÃO
37
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
38
TÓPICO 3 | JAVA SERVER FACES (JSF)
FONTE: O autor.
Para o nome do projeto, você pode colocar o que achar mais adequado.
O Servidor de Aplicação que utilizaremos será o mesmo que instalamos no tópico
anterior, o WildFly. A configuração, entretanto, exige um pouco mais de cuidado.
Clicando no botão modify, a imagem da Figura 36 permite que selecionemos
somente as APIs que utilizaremos no projeto. Para o nosso projeto, selecione as
mesmas APIs da figura e clique no botão OK.
FONTE: O autor.
39
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor.
FONTE: O autor.
40
TÓPICO 3 | JAVA SERVER FACES (JSF)
FONTE: O autor
FONTE: O autor
Para criar nosso primeiro JSF, clique com o botão direito do mouse
no diretório WebContent e selecione a opção New XHTML Page. Dê o nome
formulario.xhtml para a mesma e clique no botão Next. Na tela apresentada a
seguir, mantenha a configuração mostrada na Figura a seguir e clique em Finish.
Isso criará um template XHTML vazio para nossa aplicação.
41
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
Entre as linhas 2 e 5 são referenciadas URLs através dos prefixos ui, f e h. Estes
prefixos servirão para utilizar os componentes visuais, de acordo com sua natureza.
Isto pode ser percebido através do componente head que aqui ele é <h:head>, o que
indica que a importação ocorrerá através da URL referenciado no prefixo h.
42
TÓPICO 3 | JAVA SERVER FACES (JSF)
FONTE: O autor
FONTE: O autor
43
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FIGURA 43 – CÓDIGO-FONTE DO MB
FONTE: O autor
Para este exemplo utilizamos uma String como o objeto de domínio, para
fins de simplificação. Na verdade, o MB segue a convenção Java Bean: métodos
getters e setters para todos os atributos, um construtor vazio e a implementação da
interface Serializable. O método executar serve simplesmente para ilustrarmos o
funcionamento do botão.
Para criar esta classe, expanda o diretório Java Resources de seu projeto e
clique com o botão direito do mouse no diretório src. Selecione a opção Java Class e
copie o código-fonte contido na imagem do MB. Atenção para o nome do pacote,
pois o utilizaremos nos exemplos posteriores. Uma vez que a classe esteja pronta,
clique com o botão direito do mouse no arquivo formulario.xhml e selecione a
opção Run on Server.
44
TÓPICO 3 | JAVA SERVER FACES (JSF)
FONTE: O autor
FONTE: O autor
45
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
4. Caso a validação seja bem sucedida, o próximo passo é atualizar os valores dos
campos dentro do Managed Bean. Neste momento, todos os métodos setters
dentro do MB serão invocados.
6. Aqui o JSF gera o HTML a ser enviado para o usuário com base na árvore de
componentes. Antes disso, os valores dos componentes são extraídos do MB,
através da invocação de todos os métodos getters. Quando o processo encerra, o
HTML é finalmente enviado ao navegador.
ATENCAO
46
TÓPICO 3 | JAVA SERVER FACES (JSF)
FONTE: O autor
Mas por que o valor de nome é igual a null? Isso ocorre devido ao próprio
ciclo de vida do JSF, onde o MB é instanciado e, como esta é a primeira requisição,
a árvore de componentes deve ser montada com base no arquivo xhtml e alocada
na memória. O último passo antes de renderizar o HTML é atribuir os valores
do MB aos componentes visuais. Como nosso MB não possui nenhum valor, o
getNome aparece retornando null.
47
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
48
TÓPICO 3 | JAVA SERVER FACES (JSF)
FONTE: O autor
Cada vez que você clicar no botão Executar, uma nova instância de
FormularioMB é criada e o getNome retornará null. Este comportamento
é característico da annotation @RequestScoped, onde uma nova instância de
FormularioMB é criada a cada requisição do usuário. Esta anotação define que o
tempo de vida deste objeto é marcado pela requisição do usuário.
49
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
FONTE: O autor
50
TÓPICO 3 | JAVA SERVER FACES (JSF)
ATENCAO
Existem outros escopos no JSF além do Request e Session. Para maiores detalhes
acesse: http://uaihebert.com/jsf-mini-livro-dicas-conceitos-e-boas-praticas/
51
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
LEITURA COMPLEMENTAR
1 Introdução
Para realizar a arquitetura de uma aplicação não basta estar num dia
inspirado ou acordar com bastante vontade de realizar uma arquitetura, muito
pelo contrário, precisamos de bastante experiência em diferentes organizações,
diferentes tipos de projetos, conhecimentos de diferentes arquiteturas etc. A
experiência prática ainda é a melhor solução. O trabalho em equipe também é uma
forma excelente de definir uma arquitetura. Muitas vezes, alguns programadores
possuem outras experiências ou conhecimentos e a troca dessa experiência é
sempre válida, mesmo quando temos um arquiteto bastante experiente na equipe.
52
TÓPICO 3 | JAVA SERVER FACES (JSF)
2 Padrão Model-View-Controller
53
UNIDADE 1 | INTRODUÇÃO AO JAVA ENTERPRISE EDITION
3 Implementação do MVC
54
TÓPICO 3 | JAVA SERVER FACES (JSF)
4 Conclusão
55
RESUMO DO TÓPICO 3
Neste tópico vimos que:
56
AUTOATIVIDADE
57
5 O framework JSF (Java Server Faces), permite o desenvolvimento de
aplicações robustas e com vários recursos que facilitam o desenvolvimento.
O JSF utiliza classes Managed Beans, as quais permitem o controle de
formulários de páginas web dentro destas classes. Referente ao JSF e seus
componentes, analise as afirmativas a seguir:
I- O Managed Bean permite que um método seu seja invocado pelo componente
do tipo “commandButton”.
II- O Managed Bean funciona como intermediário entre as camadas model e
view.
III- A anotação @RequestScoped possui a mesma funcionalidade da anotação
@SessionScoped.
IV- A anotação @SessionScoped não pode ser utilizada em um Managed Bean.
58
UNIDADE 2
COMPONENTES GRÁFICOS DO
JAVA SERVER FACES E JAVA
PERSISTENCE API
OBJETIVOS DE APRENDIZAGEM
Ao final desta unidade você será capaz de:
• elaborar interfaces gráficas para web utilizando o Java Server Faces e seus
componentes gráficos.
PLANO DE ESTUDOS
Esta unidade de ensino está dividida em três tópicos, sendo que no final
de cada um deles, você encontrará atividades que contribuirão para a
apropriação dos conteúdos.
59
60
UNIDADE 2
TÓPICO 1
1 INTRODUÇÃO
Conforme já estudamos na unidade anterior, o Java Server Faces pode ser
definido como um framework de componentes de servidor para aplicações web
que funciona de acordo com o padrão MVC. Suas principais características e
funcionalidades são: api que representa componentes de interface gráfica e seu
estado, gerenciamento de eventos, validação e conversão de dados no servidor,
navegação entre páginas, internacionalização e extensibilidade para praticamente
todos os componentes (ORACLE, 2010).
2 COMPONENTES DE FORMULÁRIO
Para demonstrar os componentes faremos a simulação de uma tela de
cadastro de pessoa, conforme a Figura 50. Esta mesma interface será utilizada
posteriormente para o JPA no Tópico 2 desta unidade, persistindo estas informações
em um banco de dados relacional.
61
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
62
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
E
IMPORTANT
63
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
Note que existe uma discrepância entre a classe Pessoa e a interface gráfica
que criamos para o cadastro desta pessoa. Descobriu? Olhe novamente que eu
aguardo você aqui. Pois é, na tela de cadastro não existe o atributo id, presente
na entidade. Este atributo servirá como chave primária do objeto, uma vez que
este for persistido e faremos com que o JPA cuide da geração e gerenciamento
deste, ocultando-o de quem for utilizar a aplicação. Demonstraremos esta
funcionalidade com maiores detalhes na Unidade 3.
64
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
Como última etapa, criaremos passo a passo a interface gráfica que será
suportada por estas classes. Clique com o botão direito na pasta Web Content e
selecione a opção New XHTML Page, chamando-a de cadastro. Parte do código
fonte para esta página pode ser visto na Figura 54.
65
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
Até a linha 11, com exceção da mensagem de título, o código é gerado pelo
Eclipse. Na linha 13 utilizamos o componente formulário, visto que o objetivo
central desta página é exibir um formulário que permita o cadastro de dados
de uma pessoa. Na linha 14, utilizamos um componente de mensagens. Este
componente fará com que todas as mensagens de validação sejam exibidas neste
local da página. Caso este componente não exista, cada mensagem será exibida
próxima ao componente onde a validação não foi realizada com sucesso.
66
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
E
IMPORTANT
FONTE: O autor
67
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
68
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
FONTE: O autor
E
IMPORTANT
69
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
FONTE: O autor
70
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
E
IMPORTANT
Para o Cargo, o ideal seria criar uma nova classe com um id e uma descrição.
Por motivos de simplificação, deixaremos esta implementação para as autoatividades.
FONTE: O autor
71
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
FONTE: O autor
72
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
E
IMPORTANT
FONTE: O autor
FONTE: O autor
3 TABELAS
Um dos componentes mais utilizados em interfaces web com JSF é o
DataTable. Sua função consiste em receber uma listagem de objetos, consumindo-a
e montando um grid de dados, a partir do qual é possível editar ou mesmo
remover objetos da listagem. Em nosso caso, esta interface complementará o
cadastro da pessoa, permitindo a visualização, alteração e remoção dos mesmos.
73
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
74
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
75
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
Aqui é que entra uma das características do JSF que facilita o trabalho
dos desenvolvedores. Em outras linguagens de programação, você precisaria
colocar o objeto em uma variável de sessão (ou manter o estado dela de alguma
forma) e então fazer o redirecionamento manual da página, o que é relativamente
trabalhoso e entediante. Lembre-se de que o controlador do JSF é o managed bean,
então, se conseguirmos colocar o objeto que está na tabela dentro da variável
gerenciada por ele, já temos o que precisamos e precisaremos somente fazer o
redirecionamento. Basta mudar a assinatura de nosso método editar e fazer com
que ele retorne uma String com o nome do arquivo para onde queremos ir. Em
nosso caso, a mudança está ilustrada na Figura 70.
FONTE: O autor
76
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
E
IMPORTANT
77
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
FONTE: O autor
O JSF possui suporte nativo à AJAX desde a versão 2.0, o que facilita mais
uma vez o trabalho dos desenvolvedores. Faremos uma alteração simples em
nosso exemplo para demonstrar de que forma o JSF interage com o AJAX. Vamos
supor que exista uma regra de negócio em nosso sistema que, caso a pessoa seja
do sexo FEMININO, seu salário é aumentado em 10%. Para implementar esta
funcionalidade, precisamos de duas alterações em nosso exemplo:
1) Colocar o código que faz o bind do AJAX com o componente (Figura 74).
2) Escrever o método no managed bean para alterar o salário (Figura 75).
78
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FIGURA 74 - AJAX
FONTE: O autor
Conforme ilustrado na Figura 74, a alteração será feita no combo box que
define o sexo da pessoa. Perceba que queremos ativar um método utilizando ajax
sempre que o sexo for selecionado ou alterado (event=”change”). O atributo listener
define qual método será ouvinte deste evento, enquanto os atributos render e
execute informam qual o id do componente que será renderizado. O JSF permite
a utilização de AJAX com métodos no managed bean para os seguintes eventos:
FONTE: O autor
E
IMPORTANT
79
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
80
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
81
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
82
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
FONTE: O autor
83
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
E
IMPORTANT
84
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
85
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
FONTE: O autor
86
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
O código que responde pelo tema do primefaces está entre as linhas 15 e 18.
Na linha 16 fazemos a configuração geral, e na linha 17 selecionamos o tema. As
alterações causadas pela utilização deste tema podem ser observadas na Figura 87.
FONTE: O autor
87
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
FONTE: O autor
88
TÓPICO 1 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES
FONTE: O autor
89
RESUMO DO TÓPICO 1
Caro acadêmico, neste tópico você viu que:
• O JSF possui suporte nativo à AJAX desde a versão 2.0, permitindo a utilização
desta tecnologia em vários componentes.
90
AUTOATIVIDADE
91
92
UNIDADE 2 TÓPICO 2
1 INTRODUÇÃO
Conforme Franco (2014), a grande maioria das aplicações desenvolvidas
no mercado tem a necessidade de persistir suas informações em alguma espécie
de repositório que permita a recuperação das mesmas em um momento posterior.
Por exemplo, ao realizar uma venda para um cliente, é interessante que os dados
desta e das próximas vendas sejam armazenados e posteriormente consultados,
no sentido de determinar o perfil deste cliente.
93
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
E
IMPORTANT
Por outro lado, os bancos de dados relacionais são baseados na teoria dos
conjuntos, o que pode ser facilmente comprovado quando se faz uma pesquisa
buscando dados de mais de uma tabela através dos conectivos E e OU.
94
TÓPICO 2 | JAVA PERSISTENCE API
95
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
96
TÓPICO 2 | JAVA PERSISTENCE API
NOTA
97
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
98
TÓPICO 2 | JAVA PERSISTENCE API
FONTE: O autor
99
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
100
TÓPICO 2 | JAVA PERSISTENCE API
101
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
FONTE: O autor
102
TÓPICO 2 | JAVA PERSISTENCE API
103
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
FONTE: O autor
104
TÓPICO 2 | JAVA PERSISTENCE API
Dentro deste arquivo, você deverá criar um novo arquivo xml, com o
nome persistence.xml. O conteúdo deste arquivo deverá ser igual ao da Figura
101. Cada arquivo persistence.xml pode ter uma ou n unidades de persistência
(definidas entre as linhas 3 e 14), sendo que cada unidade deve ser identificada
com um nome único e acessar uma única base de dados. Desde que a conexão
configurada no Wildfly esteja correta, uma aplicação pode se conectar com quantos
bancos de dados quiser, um para cada unidade de persistência definida. Na linha
4 está declarado o tipo de transação. Neste caso utilizaremos Java Transaction API,
disponível no AS. Na linha 5 está declarado o DataSource que criamos dentro do
WildFly na Unidade I deste caderno, o que nos libera da definição de usuário,
senha e até mesmo base de dados neste arquivo.
FONTE: O autor
NOTA
105
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
106
TÓPICO 2 | JAVA PERSISTENCE API
NOTA
FONTE: O autor
107
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
FONTE: O autor
FONTE: O autor
NOTA
JPAQL é uma linguagem análoga ao SQL, utilizada para fazer busca de objetos
que foram persistidos em bancos de dados. Para maiores informações acesse:
http://docs.oracle.com/javaee/6/tutorial/doc/bnbtg.html
108
TÓPICO 2 | JAVA PERSISTENCE API
FONTE: O autor
109
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
FONTE: O autor
110
TÓPICO 2 | JAVA PERSISTENCE API
FONTE: O autor
111
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
NOTA
112
TÓPICO 2 | JAVA PERSISTENCE API
Com este exemplo encerramos esta unidade. Da mesma forma que o JSF,
o JPA também é uma API extremamente rica e que possui muito mais conteúdo
a ser visto. Neste tópico buscamos introduzir de forma sólida os principais
conceitos e também implementar algumas funcionalidades simples, de forma
que você tenha embasamento suficiente para continuar estudando. Na próxima
unidade abordaremos o EJB e o CDI.
113
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
LEITURA COMPLEMENTAR
EXPLORE O MONGODB
O que é o MongoDB?
114
TÓPICO 2 | JAVA PERSISTENCE API
Isso funciona muito bem para muitos aplicativos nos quais faz sentido
os dados ficarem autocontidos dentro de um documento pai. Um bom exemplo
(encontrado também na documentação do MongoDB) são posts e comentários
de blogs. Os comentários se aplicam somente a um único post, de modo que
não faz sentido separá-los dele. No MongoDB, seu documento de post de blog
teria um atributo comments para armazenar esses comentários referentes a esse
post. Em um banco de dados relacional provavelmente haveria uma tabela de
comentários com uma chave de ID primária, uma tabela de posts com uma chave
de ID primária e uma tabela de mapeamento intermediária post_comments
que definiria que comentários pertencem a qual post. Isso é muito complexo,
desnecessariamente, para algo que deveria ser muito simples
115
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
116
TÓPICO 2 | JAVA PERSISTENCE API
Instalando o MongoDB
Extraia o arquivo zip na unidade C:\, o que criará uma nova pasta chamada
mongodb-win32-i386-1.6.4, ou algo assim. Para facilitar a sua vida, renomeie essa
pasta para mongo. Depois, é preciso criar um diretório de dados. No Windows
Explorer, vá até a raiz da unidade C:\ e crie uma pasta chamada data. Dentro
dela, crie outra pasta chamada db.
117
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
Shell do MongoDB
118
TÓPICO 2 | JAVA PERSISTENCE API
Por padrão, o shell do Mongo se conecta ao banco de dados "test". Para mudar
para outro banco de dados, use o comando "use dbname". Se o banco de dados não
existir, o MongoDB o criará assim que forem incluídos dados nele. Vamos mudar
para o banco de dados "mymongo" com o seguinte comando: > use mymongo.
119
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
Nesse ponto, o banco de dados ainda não existe, porque não contém
dados. No MongoDB, os dados são armazenados em coleções, permitindo separar
documentos, se necessário. Vamos criar um documento e armazená-lo em uma
nova coleção chamada "colors": > db.colors.save({name:"red",value:"FF0000"});.
120
TÓPICO 2 | JAVA PERSISTENCE API
sku: "ABC1200",
description: "A sample product",
quantity: 1,
price_per_unit: 75.99,
}, {
sku: "XYZ3400",
description: "An expensive product",
quantity: 2,
price_per_unit: 2000
}
],
cashier_id: 340582242
}
Recuperando dados
121
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
122
TÓPICO 2 | JAVA PERSISTENCE API
Consultando dados
Consultas básicas
123
UNIDADE 2 | COMPONENTES GRÁFICOS DO JAVA SERVER FACES E JAVA PERSISTENCE API
• $mod (módulo)
• $ne (não igual)
• $in (corresponder a um ou mais valores em um array)
• $nin (corresponder a valores zero em um array)
• $or (corresponder uma consulta a outra)
• $nor (não corresponder uma consulta nem outra)
• $size (corresponder qualquer array com número definido de elementos)
• $type (corresponder valores com tipo de dados BSON especificado)
• $not (não igual a)
Conclusão
124
RESUMO DO TÓPICO 2
Neste tópico apresentamos:
O JSF possui suporte nativo à AJAX desde a versão 2.0, o que facilita mais
uma vez o trabalho dos desenvolvedores.
125
Observando a popularidade e a qualidade do Hibernate, a Oracle resolveu,
através do JCP, criar uma especificação para o mapeamento objeto relacional.
126
AUTOATIVIDADE
127
128
UNIDADE 3
OBJETIVOS DE APRENDIZAGEM
Ao final desta unidade você será capaz de:
PLANO DE ESTUDOS
Esta unidade de ensino está dividida em quatro tópicos, sendo que no
final de cada um deles, você encontrará atividades que contribuirão para a
apropriação dos conteúdos.
129
130
UNIDADE 3
TÓPICO 1
1 INTRODUÇÃO
Nas tecnologias da família EJB é que percebemos a verdadeira extensão
das capacidades do JAVAEE.
131
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
FONTE: O autor
132
TÓPICO 1 | STATELESS SESSION BEANS
E
IMPORTANT
133
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
Caso o stateless session bean deve ser utilizado também na forma remota,
a anotação muda, conforme pode ser visto na figura a seguir. Ao marcá-lo desta
forma, estamos permitindo que a aplicação possa ser colocada em instâncias
diferentes do AS. Em termos práticos, essa prática auxilia a colocação de uma
aplicação na nuvem, pois a escalabilidade é atingida de forma transparente para o
desenvolvedor. Uma instância do AS pode ficar em uma máquina e ser responsável
pela interface web e mobile em android ou html, enquanto outra instância mantém os
ejb e uma terceira máquina poderia ser responsável pelo banco de dados.
E
IMPORTANT
Apesar dos servlets não fazerem parte do escopo deste caderno, eles são
extremamente importantes no ecossistema JAVAEE. Maiores detalhes sobre os servlets
podem ser acessados em: <https://www.caelum.com.br/apostila-java-web/servlets/>.
135
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
Voltando ao EJB, a anotação utilizada faz com que o ciclo de vida deste
objeto seja completamente gerenciado pelo AS. Sua criação, utilização e destruição
não é responsabilidade do desenvolvedor, que pode gastar seu tempo com coisas
mais úteis, como por exemplo, implementar regras de negócio ou jogar Playstation
4. Uma característica bastante interessante é que, digamos que cada instância da
calculadora pode atender a um usuário de cada vez e, ocorra que 11 usuários
estejam tentando acessar seu importante serviço de cálculo ao mesmo tempo.
O que acontece? O AS automaticamente instância um novo objeto para atender
a estes 10 usuários. Isso pode ser configurado no AS, de forma que sua classe
atenda mais ou menos do que 10 usuários simultâneos, bem como o número de
instâncias que serão geradas.
Conforme K19 (2015), antes da versão 3.1, os nomes dos sessions beans não
seguiam nenhum padrão, o que dificultava o desenvolvimento em servidores
de aplicação distintos. A partir da versão 3.1 os nomes são padronizados e,
portanto, portáveis entre os servidores de aplicação. Uma aplicação remota deve
acessar o serviço de nomes (JNDI) do AS no qual o EJB que ela deseja utilizar está
implantado, conforme a Figura 121. Uma vez com a referência do stateless session
bean, o acesso remoto ocorre exatamente como o local, de forma transparente para
a aplicação. Logicamente, como o acesso ocorre em outro servidor, o tempo de
resposta geralmente é mais lento.
137
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
E
IMPORTANT
138
TÓPICO 1 | STATELESS SESSION BEANS
139
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
140
TÓPICO 1 | STATELESS SESSION BEANS
E
IMPORTANT
Nem todas as operações podem ou devem ser colocadas para executar de forma
assíncrona. O modelo de negócios deve ser avaliado para ver se permite este tipo de flexibilidade.
141
RESUMO DO TÓPICO 1
• Os dois principais tipos de EJB são os stateless session beans e os statefull session
beans.
142
AUTOATIVIDADE
2 Faça o mesmo que foi solicitado na questão 1, utilizando JSF. Você deve
implementar a interface através de um xhtml e o managed bean que fará a
interação com o stateless session bean.
143
144
UNIDADE 3
TÓPICO 2
1 INTRODUÇÃO
Enquanto a ideia dos stateless session beans era representar um processo
ou uma regra de negócio através de um componente composto por uma ou mais
classes e seus métodos, os stateful session bean trabalham de modo a representar
um conceito da aplicação cujo estado deva ser mantido, como um cliente, um
produto ou um carrinho de compras (Figura 125). Para resumir...um STATEFUL
session bean tem por objetivo manter estado conversacional.
145
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
146
TÓPICO 2 | STATEFUL SESSION BEAN E SINGLETON SESSION BEANS
E
IMPORTANT
147
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
148
TÓPICO 2 | STATEFUL SESSION BEAN E SINGLETON SESSION BEANS
Uma instância pode ser passivada porque ficou ociosa quando estava no
estado PRONTO. Isto ocorre quando um cliente não realiza chamada durante um
tempo. Quando uma instância passivada não é mais útil, o EJB Container a ativa e
depois a destrói (Figura 131).
149
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
3.2 CALLBACKS
Da mesma forma que nos stateless session beans, os stateful session beans
permitem a associação de lógicas específicas nas transições de estado de seu
ciclo de vida.
150
TÓPICO 2 | STATEFUL SESSION BEAN E SINGLETON SESSION BEANS
E
IMPORTANT
Para implementar um Singleton Session Bean, é uma boa prática definir uma
interface com as assinaturas dos métodos de negócio (Figura 134). No exemplo
abaixo criaremos um singleton session bean para implementar um sistema de chat.
151
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
As variações entre estes estados são descritas abaixo, conforme K19 (2015):
FONTE: O autor
152
TÓPICO 2 | STATEFUL SESSION BEAN E SINGLETON SESSION BEANS
E
IMPORTANT
153
RESUMO DO TÓPICO 2
• Os singleton session beans são um terceiro tipo de session bean que permite a
manutenção e compartilhamento de estado entre todos os usuários de uma
aplicação.
• O conhecimento do ciclo de vida dos session beans permite sua utilização mais
efetiva.
154
AUTOATIVIDADE
155
156
UNIDADE 3
TÓPICO 3
1 INTRODUÇÃO
Conforme K19 (2015), as aplicações corporativas trabalham mesclando o
container WEB para a camada de apresentação e o container EJB para a camada
de negócios. A especificação JEE permite que a integração entre estes dois
containers possa ser feita de forma mais fácil através da especificação Context and
Dependency Injection (CDI). Os dois pontos que destacaremos na arquitetura CDI
são o mecanismo de injeção de dependência e o gerenciamento do ciclo de vida
dos objetos por contextos.
157
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
E
IMPORTANT
O termo injeção de dependência foi criado por Martin Fowler. Maiores detalhes
podem ser observados em: <http://martinfowler.com/articles/injection.html>.
158
TÓPICO 3 | CONTEXT AND DEPENDENCY INJECTION
Para que o CDI seja ativado no AS, é necessário fazer uma modificação
nas configurações do mesmo através da adição de um arquivo chamado beans.
xml no diretório src/main/resources/META-INF/. O conteúdo do arquivo está
demonstrado na Figura 140.
159
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
E
IMPORTANT
4 ESCOPOS E CONTEXTOS
Os objetos administrados pelo container CDI são administrados em
contextos, que são coleções de objetos relacionados logicamente que devem
perdurar durante um período de tempo (K19, 2015). Quatro tipos de contextos
são definidos pela especificação:
160
TÓPICO 3 | CONTEXT AND DEPENDENCY INJECTION
161
RESUMO DO TÓPICO 3
162
AUTOATIVIDADE
1 Implemente uma aplicação web utilizando JSF que faça uso do contexto
CDI conhecido como SessionContext.
163
164
UNIDADE 3
TÓPICO 4
1 INTRODUÇÃO
Conforme K9 (2015), os ambientes corporativos são geralmente compostos
por diversos sistemas para auxiliar o funcionamento dos processos. Em algum
momento, tais sistemas deverão trocar informações entre si. Existem diversas
abordagens para esta integração e a especificação JavaEE traz uma solução robusta
através de um Middleware Orientado a Mensagens (MOM). Através do MOM é
possível enviar mensagens para outros sistemas de forma assíncrona, além de
permitir que essa transmissão aconteça de forma completamente desconectada,
onde os sistemas conhecem o Middleware, mas não conhecem uns aos outros.
2 FILAS E TÓPICOS
Os dois tipos de mensagens possíveis na arquitetura JMS são as filas ou os
tópicos, sendo que ambos devem estar previamente configurados no middleware.
Uma mensagem que for enviada para uma fila pode ser recebida por apenas
um sistema, no que é conhecido como point-to-point, enquanto uma mensagem
enviada para um tópico pode ser recebida por diversos sistemas no mecanismo
conhecido como publish-and-subscribe (K19, 2015).
165
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
FONTE: O autor
166
TÓPICO 4 | JAVA MESSAGE SERVICE (JMS)
Todo sistema que desejar trocar mensagens através de filas ou tópicos deve
obter uma conexão JMS através das fábricas cadastradas no MOM. De acordo com a
especificação, os provedores JMS em ambientes JavaEE devem ofertar uma fábrica
de conexões-padrão, que pode ser obtida através do serviço JNDI executando um
JNDI para o nome java:comp:DefaultJMSConnectionFactory (K19, 2015).
FONTE: O autor
167
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
FONTE: O autor.
FONTE: O autor.
FONTE: O autor
168
TÓPICO 4 | JAVA MESSAGE SERVICE (JMS)
E
IMPORTANT
3 MODOS DE RECEBIMENTO
Um objeto do tipo JMSConsumer pode receber mensagens JMS de três
maneiras distintas: Não bloqueante, semibloqueante e bloqueante. Estas maneiras
de recebimento dizem respeito à forma como o sistema se comporta em relação ao
fato de as mensagens serem assíncronas. Um detalhamento de cada maneira está
mostrado abaixo e o exemplo de código fonte pode ser observado na Figura 151:
169
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
FONTE: O autor
170
TÓPICO 4 | JAVA MESSAGE SERVICE (JMS)
FONTE: O autor.
171
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
E
IMPORTANT
Pronto! Graças ao JavaEE e sua vasta gama de tecnologias, você está pronto
para desenvolver aplicações web mais robustas e com mais qualidade. Como
dissemos no início do tópico, JavaEE é uma especificação extensa e existe muito
mais para aprender sobre o tema. Nossa intenção é fornecer uma introdução
sólida, para que você possa continuar evoluindo por conta própria.
172
TÓPICO 4 | JAVA MESSAGE SERVICE (JMS)
LEITURA COMPLEMENTAR
Analisa-se neste artigo o cenário da Internet das Coisas (IdC) e seus impactos
para a sociedade. Identifica-se a necessidade de uma abordagem humanista e
sistêmica na área de Arquitetura da Informação, baseada essencialmente em
princípios, que componha um arcabouço teórico transdisciplinar para lidar com
questões tecnológicas, informacionais e sociais emergentes do fenômeno da IdC.
1 INTRODUÇÃO
173
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
174
TÓPICO 4 | JAVA MESSAGE SERVICE (JMS)
176
TÓPICO 4 | JAVA MESSAGE SERVICE (JMS)
177
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
Em relatório do Gartner (2013), a IdC foi apontada como uma das
dez tendências estratégicas mundiais de tecnologia de prestação de serviços
eletrônicos. O tema tem sido tratado como prioritário pelo setor público de
diversos países, especialmente os europeus e asiáticos, com programas de
governo dedicados a identificar impactos e potenciais oportunidades trazidas
pelas inovações. Nessa conjuntura, a preocupação com a governança da Internet,
traduzida na capacidade de definir modelos de funcionamento da rede, torna-
se fundamental para garantir seu desenvolvimento sustentável e o atendimento
pleno aos interesses da sociedade.
178
TÓPICO 4 | JAVA MESSAGE SERVICE (JMS)
Visão
(Conceitos, Princípios)
Necessidades
(Aplicações)
Tecnologias
180
TÓPICO 4 | JAVA MESSAGE SERVICE (JMS)
Visão
(Conceitos, Princípios)
- 100 anos
Necessidades
(Aplicações)
- 10 anos
Tecnologias - 1 ano
181
UNIDADE 3 | ENTERPRISE JAVA BEANS (EJB) E CONTEXT AND DEPENDENCY INJECTION (CDI)
5 CONCLUSÃO
182
RESUMO DO TÓPICO 4
183
AUTOATIVIDADE
1 Implemente uma aplicação web utilizando JSF que faça uso do contexto
CDI conhecido como SessionContext.
184
REFERÊNCIAS
ARANGO, J. World information architecture day 2012. [S.l: s.n.], 2012. Disponível
em: <http://www.youtube.com/watch?v=kY5CC2QfevE&feature=youtube_gdata_
player>. Acesso em: 15 set. 2013.
CDI-SPEC. Contexts and Dependency Injection for Java. 2015. Disponível em:
<http://www.cdi-spec.org/>. Acesso em: 8 jan. 2015.
DAVIS, M. Semantic wave 2008 report: industry roadmap to Web 3.0 &
Multibillion Dollar Market Opportunities. Executive Summary, 2008. Disponível
em: <http://www.project10x.com>. Acesso em: 20 jul. 2010.
185
EUROPEAN COMMISSION. Conclusions of the Internet of Things public
consultation, n. 9. Brussels: [s.n.], 12 abr. 2012. Disponível em: <ec.europa.
eu//digital-agenda/en/news/conclusions-internet-things-public-consultation>.
Acesso em: 1 jan. 2015.
EVANS, D. The internet of things: how the next evolution of the internet is
changing everything. CISCO white paper, 2011, 11 p.
GARTNER. Gartner Says the Internet of Things installed base will grow to
26 billion units by 2020. Disponível em: <http://www.gartner.com/newsroom/
id/2636073>. Acesso em: 28 jul. 2014.
GREENFIELD, A.; KIM, N. Against the smart city: the city is here for you to
use. [S.l.]: Do projects, 2013.
186
INTERNET OF THINGS: Philosophy. 3 jul. 2014, York St John University, UK.
Anais... York St John University, UK: [s.n.], 3 jul. 2014 Disponível em: <http://
internetofthingsphilosophy.com/slides-proceedings-etc/>. Acesso em: 1 ago. 2014.
ISHII, H. Defy gravity: beyond tangible bits, toward radical atoms. In: DW/AD ‘12,
4 dez. 2012, Kyoto International Conference Center, Kyoto, Japan. Anais... Kyoto
International Conference Center, Kyoto, Japan: [s.n.], 4 dez. 2012. Disponível em:
<http://www.youtube.com/watch?v=SMdFus2nPyw&feature=youtube_gdata_
player>. Acesso em: 20 abr. 2014.
K19. Desenvolvimento Web Avançado com JSF 2, EJB 3.1 e CDI. 2015.
Disponível em: <http://www.k19.com.br/downloads/apostilas/java/k19-k22-
desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdi>. Acesso em: 15 jan. 2015.
K19. Desenvolvimento Web Avançado com JSF2, EJB 3.1 e CDI. 2013.
Disponível em: <http://www.k19.com.br/downloads/apostilas/java/k19-k12-
desenvolvimento-web-com-jsf2-e-jpa2>. Acesso em 14 ago. 2015.
KENDE, M. Global Internet report. Geneva: Internet Society, 2014. Disponível em:
<http://www.internetsociety.org/doc/global-internet-report>. Acesso em: 28 jul. 2014.
KLYN, D. Dutch uncles, ducks and decorated sheds: reframing IA. Baltimore,
MD, USA: [s.n.], 2013. Disponível em: <http://www.slideshare.net/danfnord/
dutch-uncles-ducks-and-decorated-sheds-reframing-ia>. Acesso em: 18 set. 2013.
187
LUCAS, P.; BALLAY, J.; McMANUS, M. Trillions thriving in the emerging
information ecology. Hoboken, N.J: Wiley, 2012.
NEGROPONTE, Nicholas. Learning by Doing: Don’t Dissect the Frog, Build it.
2004. Disponível em: <http://archive.wired.com/wired/archive/2.07/negroponte_
pr.html>. Acesso em: 8 ago. 2015.
NORMAN, D. The design of future things. New York: Basic Books, 2009.
ORACLE. Introduction to Java Enterprise Edition 7. 2013. Disponível em:
<http://www.oracle.com/technetwork/java/javaee/javaee7-whitepaper-1956203.
pdf>. Acesso em: 2 ago. 2015.
188
ORACLE. Java Platform, Enterprise Edition: The Java EE Tutorial. 2014. Disponível
em: <https://docs.oracle.com/javaee/7/tutorial/>. Acesso em: 15 ago. 2015.
189
TODD, Spangler. Netflix bandwidth usage climbs to nearly 37% of internet
traffic on peak hours. Disponível em: <http://variety.com/2015/digital/news/
netflix-bandwidth-usage-internet-traffic-1201507187/>. Acesso em: 2 ago. 2015.
W3C. Ubiquitous Web Domain. W3C. [S.l: s.n.], 2010. Disponível em: <http://
www.w3.org/UbiWeb/>. Acesso em: 20 jul. 2010 .
WEBER, R. H. Internet of things: governance quo vadis? Computer Law & Security
Review, v. 29, n. 4, p. 341-347, ago 2013 Disponível em: <http://www.sciencedirect.
com/science/article/pii/S0267364913001015>. Acesso em: 28 ago. 2013.
WEISER, M.; BROWN, J. S. The coming age of calm technology. Palo Alto:
Xerox PARC, 1996.
190
ANOTAÇÕES
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
191
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
192