É comum a expressão "servidor web" ser utilizada para denominar processos cuja finalidade é disponibilizarrecursos estáticos, que são os que se encontram completos antes de uma requisição ser realizada, erecursos dinâmicos, que são produzidos no momento em que um cliente o requisita e seu conteúdoé definido em tempo de requisição. Um Container de Servlets é um servidor web capaz de gerenciardiferentes aplicações que disponibilizam conteúdo dinâmico, e um Servlet é uma classe Java capaz degerar conteúdo desse tipo, mediante a requisição de um cliente. Cada requisição atendida por um Servletpode ser executada por uma thread e múltiplas requisições podem estar em execução simultaneamente.Considere o Servlet a seguir que mantém uma variável cuja finalidade é controlar quantas requisições sãoatendidas ao longo do tempo.A respeito do Servlet apresentado, avalie as afirmações a seguir.I. O código apresenta uma condição de corrida.II. Substituir a linha 5 pela construção synchronized (this) {contador = contador + 1;}garante o correto funcionamento do método.III. Obter a trava do objeto referenciado por request antes de executar o incremento e liberá-lalogo a seguir, garante o correto funcionamento do método.É correto o que se afirma emA I, apenas.B II, apenas.C I e III, apenas.D II e III, apenas.E I, II e III.
#ENADE
Soluções para a tarefa
As afirmativa II e III estão corretas em relação a programação apresentada e seus respectivos implementos, alternativa D!
1) Primeiramente devemos entender que Servlet é uma classe utilizada com a finalidade de estender funções dentro de um servidor ao qual está função esteja sendo aplicada. Vale ressaltar que o Servlet é normalmente utilizado com servidores web, devido a sua compatibilidade.
2) Assim, analisando as afirmativas em relação a linguagem java e ao Servlet teremos:
I) O código apresenta uma condição de corrida. Falso, pois a função corrida visa solucionar determinado problema utilizando uma função da exclusão mútua de ambos os dados, ou seja, o código apresentado não têm essa função.
II) Substituir a linha 5 pela construção synchronized (this) {contador = contador + 1;} garante o correto funcionamento do método. Verdadeiro, pois ao criar o contador dentro da linguagem, sempre que um ciclo for reiniciado o algoritmo será capaz de organizar o novo ciclo de acordo com os parâmetros estabelecidos.
III) Obter a trava do objeto referenciado por request antes de executar o incremento e liberá-la logo a seguir, garante o correto funcionamento do método. Verdadeiro, a trava request garante que qualquer processo de trava do algoritmo o mesmo não entre em um lupe infinito, visando encontrar erros de aplicação dentro da plataforma programada.