Este é um post disponível para assinantes MVPJava EE 6 na Prática – Parte 3 - Java Magazine 82
De novidades da plataforma Java EE, versão 6.0, lançada em dezembro de 2009, como padrão para desenvolvimento de aplicações corporativas (enterprise) em Java.Esta é a terceira e última parte de uma série de artigos sobre o tema, portanto sugere-se a leitura dos dois primeiros artigos da série nas duas últimas edições da Java Magazine.
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 82
O que há de novo na plataforma Java Enterprise Edition
Mostraremos mais algumas novidades da versão mais recente da plataforma Java, Enterprise Edition, utilizando como exemplo uma aplicação real
Esta é a terceira e última parte de uma série de artigos sobre a plataforma Java Enterprise Edition, versão 6. Na primeira parte, publicada na Edição 80 da Java Magazine, apresentamos a plataforma e suas novidades de maneira geral e começamos o desenvolvimento do SisContrAm, um sistema de controle de ambulâncias, desenvolvido com Java EE 6. Usando este sistema como exemplo, mostramos novas funcionalidades da plataforma: JPA 2.0, Bean Validation e o CDI, Contexts and Dependency Injection. Na segunda parte, publicada na Edição 81, falamos sobre Facelets, a API de Critérios, gerenciamento de conversações e suporte a AJAX.
Nesta edição, utilizando sempre o SisContrAm como exemplo, mostraremos mais novidades do Java EE 6:
• JAAS: a API Java Authentication and Authorization Service faz parte do núcleo do Java SE (Standard Edition) e é a tecnologia base para implementação de segurança em aplicações Java EE 6. Veremos como registrar usuários e grupos no domínio de segurança do servidor de aplicação, autenticar usuários via formulário ou programaticamente e como proteger classes e páginas de acesso não autorizado;
• Servlets 3.0: Java EE 6 inclui a especificação mais recente da API Servlets, a versão 3.0, que traz diversas novidades, dentre as quais anotações e fragmentos Web, que explicaremos em mais detalhes neste artigo;
• Novos comandos da JPQL: a Java Persistence Query Language, linguagem de consultas utilizada para recuperar ou alterar dados referentes a objetos Java armazenados em bancos de dados relacionais, recebeu novos comandos na versão 2.0 da Java Persistence API (JPA). Mostraremos exemplos de uso destes novos comandos e discutiremos também o suporte ao travamento pessimista, outra novidade da JPA 2.0;
• Melhoramentos EJB: a cada nova versão de Java EE, desenvolver com EJBs fica mais simples, facilitando a tarefa do desenvolvedor de utilizar a infraestrutura provida pelo container. Na versão 6 da plataforma, facilidades como EJBs sem interface, EJBs Singleton e métodos assíncronos foram adicionadas e serão mostradas neste artigo.
Mostraremos tudo isso melhorando as funcionalidades de login e registro de chamadas do SisContrAm, além de adicionar duas pequenas novidades ao sistema: um contador de requisições e um EJB de propriedades globais da aplicação. Para um melhor aproveitamento dos exemplos, é recomendável que o leitor tenha lido as duas primeiras partes desta série de artigos, preferencialmente experimentando os exemplos ali trazidos. Se não é o caso, o código-fonte do SisContrAm ao final do segundo artigo pode ser obtido no site da Java Magazine e utilizado como base para os exemplos deste artigo.
Autenticação e autorização com JAAS
Na segunda parte desta série de artigos desenvolvemos a funcionalidade de login do SisContrAm. O login é uma forma de implementar autenticação, que é o ato de reconhecer a pessoa que está utilizando o sistema como um usuário registrado e que tem direito a acessar suas funcionalidades. Autenticação é garantir que o usuário é realmente quem ele diz ser.
No entanto, autenticação sozinha não basta, é preciso também implementar autorização. Autorização, ou controle de acesso, consiste em determinar quais funções e informações do sistema o usuário, que já foi autenticado, está autorizado a acessar. Pode parecer que implementamos ambos no SisContrAm, pois se um funcionário for cadastrado como operador e fizer o login, somente a opção “Chamada de Emergência” será mostrada a ele. No entanto, se este funcionário digitar a URL http://localhost:8080/SisContrAm-war/faces/cadastrarAmbulancia/lista.xhtml em seu navegador, poderá usar sem restrições o cadastro de ambulâncias, que deveria ser restrito a administradores.
Podemos implementar a autorização no SisContrAm de várias formas, no entanto, a plataforma Java EE 6 inclui como parte do seu conjunto de tecnologias o JAAS – Java Authentication and Authorization Service, ou Serviço de Autenticação e Autorização de Java. O JAAS é uma das APIs centrais do Java SE e é a base dos mecanismos de segurança do Java EE que, além de autenticação e autorização, visam prover integridade de dados, confidencialidade, não repudiação e auditoria.
Vamos, então, reimplementar o login utilizando os mecanismos de autenticação do Java EE, inicialmente utilizando o método de formulário e em seguida como seria a autenticação programática. Com o usuário autenticado, protegeremos as funcionalidades do SisContrAm contra acesso não autorizado utilizando anotações do JAAS, novidades no Java EE 6.
"
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
7 COMENTÁRIOS
Postei na edição anterior minha opnião sobre essa artigo o chamando de "Muito Ruim", e vou mudar minha opnião para Muito Confuso para mim.
Vitor vc não teria um projeto postado em edições anteriores que vc utiliza o IDE Eclipse, e que seja java para Web. ObrigadoCaro Mauricio,
Na Java Magazine não tenho, porém no meu site você poderá encontrar um artigo que escrevi que utiliza Eclipse para desenvolver uma aplicação Web utilizando os frameworks Struts2, Spring, Hibernate e SiteMesh. Foi escrita em 2007, então está um pouco defasado. Meu site é:
http://disi.unitn.it/~vitorsouza/pt/java/
Aqui no portal da DevMedia eu publiquei vídeo-aulas de desenvolvimento pra Web em um mini-curso. As duas primeiras falam de Servlets e JSP.
Depois eu passo para o framework Struts2 e, em cada passo, explico uma função diferente.
Bons estudos,
Vítor Souza

Caro Reinaldo,
O que você pode fazer é criar uma classe que implemente o conversor, criar um método getConversor() no seu managed bean (controlador), construir uma instância do conversor neste método, passando os EJBs necessários ao conversor no construtor (o managed bean pode receber os EJBs via injeção de dependências - anotação @EJB) e, na sua tag h:selectManyCheckbox, fazer referência ao conversor assim:
#{meuManagedBean.conversor}. Isso irá chamado o método getConversor(), que irá criar o conversor passando as dependências via construtor e retorná-lo para o JSF.
Espero que ajude,
Vítor Souza


Space do autor


0
0
