Lista de Exercícios Preparatórios para a Prova da Segunda Unidade
Sobre o serviço de mensagens assíncronas em Java EE com JMS e os beans orientados a mensagens - MDBs - responda as seguintes questões:
- O que caracteriza a comunicação assíncrona entre objetos?
- Apresente, e justifique, três vantagens da comunicação assíncrona sobre a comunicação síncrona.
- Cite um exemplo real de uma funcionalidade que requer, da a sua natureza, que a comunicação seja assíncrona. Justifique a sua resposta.
- Explique com suas palavras o objetivo da API Java Message Service - JMS. Utilize na sua explicação os papéis de Cliente JMS e Servidor JMS.
- Quais os dois possíveis destinos para mensagens assíncronas? Quais as características de cada tipo que as diferem?
- Até que momento as mensagens enviadas a uma Fila são guardadas? Justifique a sua resposta.
- Independente do destino da mensagem, estas são consumidos de forma síncrona e assíncrona. Como se dá o recebimento (i) de forma síncrona e (ii) de forma assíncrona? Pondere sobre as vantagens e desvantagens dessas duas formas de recebimento de mensagens.
- Quais os elementos que são encapsulados pelo elemento JMSContext, o qual deve ser criado em um componente que deseja utilizar a API JMS? Qual o papel de cada de deles no funcionamento da API?
- Quais os dois elementos que precisam ser injetados em um componente que deseja utilizar a API JMS?
- Para que servem os "seletores" de mensagens JMS?
- Qual a diferença de uma inscrição "durável" para um "não-durável" para um Tópico?
- Qual a diferença de uma inscrição "compartilhada" para um "não-compartilhada" para um Tópico?
- Quais as três partes de uma mensagem JMS? O que é definido em cada uma delas?
- Cite três tipos distintos de mensagens JMS, ao mesmo tempo exemplifique em que contexto cada tipo poderia ser utilizado.
- Quais os EJBs que devem receber mensagens assíncronas?
- A classe que implementa um MDB deve ter uma anotação específica. Qual é essa anotação? Nessa anotação é necessário definir uma configuração de ativação. Quais as duas propriedades que precisam obrigatoriamente ser definidas?
Sobre a utilização de Web Services em aplicações corporativas Java EE, responda das seguintes questões:
- Quais as duas modalidades para desenvolvimento de Web Services integrados à aplicações Java EE? Quais as APIs que dão suporte a cada uma das abordagens? Descreva brevemente as características (e diferenças) entre as abordagens.
- Quando utilizar cada uma das abordagens disponíveis para Web Services integrados a uma aplicação Java EE?
- Para um Web Service implementado com JAX-WS, quais as anotações necessárias para uma classe que implementa tal serviço?
- Para um Web Service implementado com JAX-RS, quais as anotações necessárias para uma classe que implementa tal serviço?
- Quais as formas de passar parâmetros para um Web Service implementado com JAX-RS?
Sobre padrões arquiteturais para aplicações corporativa, respondas as seguintes questões:
- Apresente três justificativas para utilização de padrões arquiteturais no desenvolvimento de aplicações corporativas.
- Geralmente os padrões são divididos em três camadas. Quais são essas camadas? Qual o objetivo de cada uma delas?
- Explique com suas palavras o objetivo e funcionamento do padrão "View Helper".
- Explique com suas palavras o objetivo e funcionamento do padrão "Business Delegate".
- Explique com suas palavras o objetivo e funcionamento do padrão "Application Service".
- Descreva algum padrão de projeto que você já tenha aplicado anteriormente.
Sobre Transações em aplicações corporativas am JEE, responda as seguintes questões:
- Qual o tipo de funcionalidade que naturalmente requer a utilização de transações?
- Explique o significado das ações de "commit" e "rollback" no contexto de transações.
- As transações geralmente precisam obedecer à propriedade ACID. O que isso quer dizer?
- Qual o objetivo da interface UserTransaction definida pela API JTA?
- Nas transações gerenciaras pelo contêiner, quais são as escolhas que o desenvolvedor pode fazer?
- Qual a anotação utilizada para a especificação de como o desenvolvedor quer que o contêiner trate as transações para todos os métodos de uma classe ou para um método específico?
- Cite e ilustre o funcionamento dos 6 (seis) atributos de transação possíveis para serem utilizados por um desenvolvedor Java EE?
- O isolamento previsto para as transações ajudam a prevenir algumas "leituras" equivocadas. Explique com suas palavras o que caracteriza cada uma delas: (i) leituras sujas, (ii) leituras não-repetíveis e (iii) leituras fantasmas.
- Como é possível garantir o isolamento desejável para uma transação?
- Quais são os bloqueios de dados possíveis nos bancos de dados? Como funcionam cada um deles?
Sobre segurança em aplicações corporativas com Java EE, responda as seguintes questões:
- Quais os serviços de segurança que pode ser utilizados por uma aplicação? Cite pelo menos um problema (ou ameaça) real atacado por cada um dos serviços de segurança mencionados.
- O que justifica uma aplicação corporativa necessitar de serviços de segurança?
- O que é a JAAS - Java Autenthication and Authorization Service?
- No contexto Java EE, e mais especificamente JAAS, qual a relação entre autenticação e autorização?
- Como é possível definir a autorização para executar um dado método de um EJB utilizando JAAS?
Sobre o serviço de temporização integrado a plataforma Java EE, responda as seguintes questões:
- Cite o exemplo de três funcionalidades de aplicações qualquer que necessitem a execução de tarefas agendadas?
- Os temporizadores para EJBs podem ser programáticos e automáticos. Quais as características desses dois tipos e em que diferem?
- Quais são os 7 (sete) atributos que podem ser utilizados em uma expressão de agendamento? O que representam?
- Escreva as seguintes expressões de agendamento:
- (a) Toda segunda-feira de 12:00 horas (meio dia);
- (b) Segundas, quartas e sextas-feiras, de duas em duas horas, a partir do meio dia;
- (c) Primeira e última sexta-feiras do mês, as 15:30 horas;
- (d) Dia 30 de março de 2015, as 16:00 horas;
- (e) Todos os dias da semana (exceto sábados e domingos), uma vez por hora, das 8:00 as 18:00 horas.
- Como é especificado o método a ser executado quando estamos utilizando o agendamento programático?
- Como é especificado o método a ser executado quando estamos utilizando o agendamento automático?
- Como é possível que um método possua vários agendamentos associados ao mesmo?
- Quais as formas de cancelar um temporizador?
- Como é possível salvar um temporizador para um uso futuro?
- Como se comporta um temporizador quando criado antes ou durante uma transação?