Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 4 de 55 
Eu sei que cês entenderam a t ria, mas eu gostaria ue cês internalizassem 
a deia principal! Em vez de os carregadores dependerem dos dispositivos, os 
dispositivos estão dependendo dos carregadores. Isso não soa absurdo? É o mais 
importante dependendo do menos importante; é o essencial dependendo do 
acessório; é o “poste mijando no cachorro”. 
 
Bem, um dos princípios do Spring Framework é a Inversão de Controle (ou 
Inversão de Dependência). É a rma de verter ssa lógica! mos fazer 
classes de aixo í el dependerem de c asses de lto nível. Vamos programar para 
interfaces e, não, para implementações. Como podemos fazer isso, professor? Por 
meio da Injeção de Dependências (não confundam, são conceitos 
independentes!). 
 
 
 
Professor, o que seria a injeção de dependências? Trata-se e padrão e 
desenvolvimento e oftware t zado ara rter ntroles anter aixo 
acoplamento entre os módulos de s ema. Ela visa remover dependências 
desnecessárias entre as classes ou torná-las mais suaves, e ajuda a ter um design 
de software que seja mais fácil de manter e de evoluir. 
 
Lembram-se do exemplo anterior? Para eu utilizar uma classe de e-mail na classe 
de usuário, eu teria que instanciar a classe de e-mail dentro da classe de usuário. 
Ora, isso á coplaria s classes, fazendo com que a asse de ário dependesse 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 7 de 55 
 
O Módulo ORM fornece camadas de integração para mapeamento objeto-
relacional com tecnologias como JPA, Hibernate, etc. O Módulo JMS fornece a 
possibilidade de produzir e consumir mensagens, com integração nativa com JMS. 
Galera, vamos falar pouco gora bre g curity! ata-se de 
framework que rnece iversos serviços de segurança plicações Java EE. 
 
Ele faz isso de maneira amigável e flexível para o desenvolvedor, aderindo às 
práticas bem estabelecidas e introduzidas pelo Spring Framework. Ele tenta 
endereçar todas as camadas de gurança entro a plicação. Além disso, vem 
com um conjunto de opções de configuração que o torna bastante poderoso. Sua 
principal função é fornecer autenticação e autorização sobre o Spring Framework. 
 
Apenas para lembrar esses conceitos, a autenticação é o processo de estabelecer 
se alguém é quem afirma ser, e a autorização é o processo de decidir se alguém 
pode ou não realizar alguma ação em uma aplicação. Ele pode er lizado em 
conjunto m aplicações web u standalone. Além disso, é capaz de proteger de 
ataques como: session fixation, clickjacking, cross site request forgery, etc. 
 
Ele é apaz de dar om diversos modelos e utenticação so ito 
atrativo para esenvolvedores. Pode fornecer segurança em nível de visões, 
métodos, serviços, URL, domínios, etc. Antes que eu me esqueça, ele é open-
source – claro, é parte dos Projetos Spring, junto com Spring Batch, Spring 
Integration, Spring Web Services, Spring Social, Spring Web Flow e Spring Data. 
 
As configurações de segurança são realizadas no arquivo applicationContext-security.xml 
no diretório WEB-INF. Para que qualquer página ou diretório sejam seguros, é 
necessário adicionar sse rquivo lemento <intercept-url>. Como, professor? 
Mais ou menos assim: <intercept-url pattern="/something" access="hasRole('ROLE_USER')"/>. É 
isso, galera! Acredito que isso seja suficiente... 
 
 
 
 
 
 
 
 
 
 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 11 de 55 
 RUTS 
 
Apache t uts ramework livre aberto, extensível, moderno gil para 
criação e plicações Web ava equenas ou grandes. Ele é resultado da junção 
do Struts com WebWork. Ele preconiza convenções acima de configurações e 
facilita o gerenciamento, reutilização e manutenção de código. Vamos ver agora 
algumas características importantes do Struts 2: 
 
 Linguagem Java: utiliza infraestrutura oferecida pelas bibliotecas do Java e 
se concentram mais em negócios e menos em detalhes de infraestrutura. 
Aproveita-se da maturidade da linguagem para construir aplicações mais 
robustas e multiplataforma. 
 
 Plug-ins: permite a utilização de plug-ins disponibilizados por terceiros, 
dessa forma o framework Struts 2 oferece em si apenas funcionalidades 
básicas e se utiliza de outras funcionalidades fornecidas por terceiros (Ex: 
REST, Hibernate, jQuery, Rome, JFreechart, etc). 
 
 Convenções ao és de onfigurações: sempre que possível a configuração 
foi eliminada do Struts 2. Ao não usar configurações, nomes de classes 
podem oferecer mapeamento de ações, e valores de resultados retornados 
podem oferecer nomes para a páginas JSP serem renderizadas. 
 
 Anotação o s e nfiguração X seguindo a tendência de todos os 
frameworks atuais, o Struts 2 disponibiliza anotações para serem utilizadas 
nas classes, reduzindo a configuração XML e mantendo a configuração mais 
perto da classe de ação. 
 
 Conversão e ados: a conversão de valores de campos de formulários 
baseados em String em objetos ou tipos primitivos é tratada pela estrutura 
de suporte (e vice-versa), removendo a necessidade de prover este código 
de infraestrutura na classe da ação. 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 12 de 55 
 
 Injeção de ependência: seguindo mais um padrão que está sendo utilizado 
pela maioria dos frameworks, o Struts 2 suporta a injeção de dependências, 
reduzindo assim o acoplamento entre as camadas do aplicativo, tornando-o 
muito mais simples e mais fácil de testar. 
 
 Testabilidade: em uma época em que o TDD se torna quase uma obrigação 
em qualquer projeto de software de médio e grande porte, o Struts 2 facilita 
a vida dos desenvolvedores, tornando mais simples o teste das ações, 
interceptadores e outras classes do Struts 2. 
 
 
 
Como ostra a magem acima, Struts 2 possui em sua base duas importantes 
tecnologias! No coração de todas as aplicações, encontram-se as trocas entre 
cliente e servidor do Protocolo HTTP. A API Servlet funciona como uma abstração 
de comunicação entre o Framework Struts 2 e o Protocolo HTTP, facilitando troca 
de requisições e respostas Entendido? 
 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 14 de 55 
 View (Result): o resulta retorna a página para o navegador. Essa ágina a 
interface que presenta uma epresentação o estado da plicação o suário. 
Em geral, trata-se de Páginas JSP. É muito simples: a View traduz o estado da 
aplicação em uma representação visual em que seja possível a interação com o 
usuário. Esse é bem simples... 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 19 de 55 
implementações fornecem extensiva segurança integrada (Certificação Digital, 
Criptografias, etc). 
 
Sobre as estratégias de envio de mensagens citadas acima, temos ponto-a-ponto 
e publish/subscribe – ambas são bastante parecidas. No rimeiro o missor 
cria u a a e ensagens no servidor e envia as mensagens para essa a. O 
receptor se registra no servidor para receber as mensagens enviadas para essa fila. 
Há um relacionamento um-para-um (Unicast) entre o cliente emissor e o cliente 
receptor. 
 
Nesse caso,apenas um receptor irá ler a mensagem. Como se trata de uma 
comunicação assíncrona, não é necessário que o emissor esteja em execução no 
momento em que o consumidor lê a mensagem. Da mesma forma, não é 
necessário que o eceptor steja m xecução mento m que produtor 
envia nsagem. Quando lida a mensagem, o receptor envia um aviso para o 
emissor. 
 
 
 
No s gundo a o missor ia pico no s rvidor publica nsagens para 
esse ópico. Os receptores se registram (i.e., dão subscribe) no servidor para 
receber mensagens por tópico. Há um relacionamento um-para-muitos (Multicast) 
entre o emissor e os receptores. Dessa forma, diversos receptores podem ler a 
mensagem publicada no servidor. 
 
Existe t mbém uma dependência t mporal entre missor o eceptor e 
tópico. O receptor deve permanecer continuamente ativo para receber 
mensagens. Uma observação de nomenclatura: no primeiro caso, chamamos o 
emissor de produtor e o receptor de consumidor; no segundo caso, chamamos o 
emissor de publicador e o receptor de assinante (subscriber). 
 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 20 de 55 
 
 
A Arquitetura JMS possui três elementos principais: 
 
 Provedor: sistema de mensagem que implementa Interfaces JMS e fornece 
componentes administrativos e de controle. 
 
 Cliente: programas ou componentes, escritos em Java, que produzem e 
consomem mensagens. Qualquer aplicação Java EE pode ser um cliente. 
 
 Mensagem: trata-se dos objetos que comunicam informações entre Clientes 
JMS – os dados em si. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 25 de 55 
diferentes. Os usuários que precisam acessar um diretório LDAP usam a mesma 
API que os usuários que desejam acessar um diretório NIS ou diretório da Novell. 
 
Todas as operações de diretório são feitas pela interface da JNDI, o que fornece 
uma estrutura comum. Agora s ver lguns benefícios: 
 
 Você só precisa aprender uma única API para acessar todos os tipos de 
informações do serviço de diretório, como credenciais de segurança, 
números de telefone, endereços eletrônico e de rede, preferências, etc. 
 
 A JNDI isola a aplicação em relação ao protocolo e aos detalhes de 
implementação. Ademais, pode utilizá-la para utilizar a JNDI para ler e 
gravar objetos Java inteiros a partir de diretórios. 
 
 É possível vincular diferentes tipos de diretórios, como um diretório LDAP 
com um NDS, e fazer com que a combinação pareça um diretório grande, 
federado, o qual aparece para o cliente como um único diretório contíguo. 
 
No Java EE, você ode ar DI para itos propósitos! Você pode utilizá-lo 
para adquirir uma referência para a interface Java Transaction API (JTA) User-
Transaction; você pode utilizá-lo para conectar-se às fábricas de recursos, como 
drivers de JDBC ou de Java Message Service (JMS); ou, por fim, você pode utilizá-
lo para pesquisar outros beans. 
 
A JNDI é composta por metades: a API cliente e a Service Provider Interface (SPI). 
A primeira permite que o código Java realize operações de diretório. Essa é 
uniforme para t dos os tipos de diretórios. Você gastará a maior parte do tempo 
utilizando a API cliente. A JNDI SPI é uma interface à qual os fornecedores de 
serviços de nomeação e de diretório podem se conectar. 
 
A SPI é o oposto da API: enquanto esta permite que os clientes codifiquem uma 
única interface unificada, a SPI possibilita aos fornecedores de serviço de 
nomeação e de diretório ajustarem seus protocolos proprietários particulares no 
sistema. Isso permite que digo de liente lavanque os serviços de meação 
e e iretório proprietários m Java enquanto t m um alto í l de 
portabilidade de ódigo. 
 
Por fim, gostaria de falar também sobre contextos e sistemas de nomes! Um 
contexto é um conjunto de conexões nome-objeto, i.e., um objeto que tem zero 
ou mais ligações. Se o objeto contido no contexto for também um contexto, ele 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 26 de 55 
será um subcontexto4. Um sistema e mes é njunto t rligado e 
contextos que espeitam a sma convenção e possuem um njunto omum e 
operações. 
 
A imagem abaixo apresenta a Arquitetura JNDI em camadas: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4 Eマ さっ┌ゲヴっHキミっテ;┗;ざが usr é contexto, bin é subcontexto de usr, etc; 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 42 de 55 
em um deles, a dependência é resolvida por meio de um construtor do objeto 
a receber o objeto dependente. Este tipo é conhecido por: 
 
 a) Bean Injection. 
 b) Setter Injection. 
 c) Factory Injection. 
 d) Constructor Injection. 
 
 
 
Curso de Desenvolvimento de Software para Concursos 
Profs. Diego Carvalho e Leon Sólon – Aula 06 
 
Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 49 de 55 
d) O JSTL permite ao programador escrever páginas JSPs sem necessariamente 
utilizar códigos Java, facilitando a integração entre webdesigners e 
programadores.