SóProvas


ID
659959
Banca
FCC
Órgão
TRE-CE
Ano
2012
Provas
Disciplina
Programação
Assuntos

No contexto do ciclo de vida de um servlet, considere:

I. Quando o servidor recebe uma requisição, ela é repassada para o container que, por sua vez, carrega a classe na memória e cria uma instância da classe do servlet.

II. Quando um servlet é carregado pela primeira vez para a máquina virtual Java do servidor, o método init() é invocado, para preparar recursos para a execução do serviço ou para estabelecer conexão com outros serviços.

III. Estando o servlet pronto para atender as requisições dos clientes, o container cria um objeto de requisição (ServletRequest) e de resposta (ServletResponse) e depois chama o método service(), passando os objetos como parâmetros.

IV. O método destroy() permite liberar os recursos que foram utilizados, sendo invocado quando o servidor estiver concluindo sua atividade.

Está correto o que se afirma em:

Alternativas
Comentários
  •  

    O ciclo de vida de um servlet é controlado pelo container no qual o servlet tenha sido implantado.

    Quando uma requisição é mapeada para um servlet, o containet executa as seguintes etapas:

    - Se uma instância do servlet não existe, o container web:

    * Carrega a classe servlet.

    * Cria uma instância da classe.

    * Inicializa a instância do servlet chamando o método init.

    - Chama o método service, passando obetos de requisição e resposta.

    Se o container precisa remover o servlet, ele o finaliza chamando o método destroy.

  • O ciclo de vida da servlet, segundo o site Linguagens de Programação, é esse:
    Ciclo de Vida
    Dito isso, analisando cada item.

    I. Quando o servidor recebe uma requisição, ela é repassada para o container que, por sua vez, carrega a classe na memória e cria uma instância da classe do servlet. O gabarito diz que é correto. De fato, trata-se do procedimento padrão: se ocorrer a requisição e a servlet não existir, este é o procedimento. Acontece que, se já houver uma classe da servlet instanciada, ele não vai criar a instância. Portanto, eu particularmente discordo do gabarito, mas fazer o quê..?
     
    II. Quando um servlet é carregado pela primeira vez para a máquina virtual Java do servidor, o método init() é invocado, para preparar recursos para a execução do serviço ou para estabelecer conexão com outros serviços.  Correto. É dedutível da imagem.
     
    III. Estando o servlet pronto para atender as requisições dos clientes, o container cria um objeto de requisição (ServletRequest) e de resposta (ServletResponse) e depois chama o método service(), passando os objetos como parâmetros. Correto, é isso mesmo, dedutível da imagem.
     
    IV. O método destroy() permite liberar os recursos que foram utilizados, sendo invocado quando o servidor estiver concluindo sua atividade. Correto. Da imagem, temos que a "Hora da morte" ocorre quando o recurso não é mais necessário e também quando o servidor estiver concluindo sua atividade.
  • Muito bom o comentário do colega acima, só complementando: Acho que a letra "A" estaria errada se estivesse assim :"sempre carrega a classe na memória e cria uma instância da classe do servlet" .
    Valeu..


  • Obtive a mesma interpretação da quetão I. Em uma leitura criteriosa a questão não mostra que o conteiner está sendo instanciado pela primeira vez! Marquei com errada também! 
  • "Quando recebe uma requisição" quer dizer que toda vez que recebe uma requisição. É o mesmo que dizer: "quando chove eu me molho", quer dizer que toda a vez que chove eu me molho. Ou seja, NÃO tem como o item I estar correto se respeitarmos a língua portuguesa, uma vez que o servlet é criado somente na primeira requisição. Entraria com recurso certo.

  • "estiver concluindo sua atividade"

    Concluindo ou concluído? Faz toda diferença!

  • Também quero deixar uma observação sobre o "estiver concluindo sua atividade" que já foi citado, Concluindo e concluído são diferentes. E sobre a I, não entendo por que questões de variadas bancas sempre tendem a fazer esse tipo de afirmação, pela lingua portuguesa da pra interpretar um "sempre", mas segundo eles não, acontece isso, mas não é sempre! Eu fico com o exemplo da chuva do caro amigo ai acima, e quem puder me corrigir sobre isso também agradeço, mas esse é meu pensamento sobre o quesito I. Ah e marquei a letra D.

  • O método destroy() faz parte das ultimas instruções do servidor, mas não é a ultima coisa que o servidor faz. Analisando bem, "concluindo" é mais coerente do que "concluído". Não teria como o servidor chamar o método destroy() depois de concluir (finalizar) suas atividades, já que esse método faz parte dela.

    Essa é minha análise do item IV. Mas fiquem a vontade para opinar. Afinal, a discussão pode ser construtiva.

    Bons estudos