Pular para o conteúdo principal

Questão de Programação — Java — FGV 2023

ProgramaçãoJava
Código
fg059287
Banca
FGV
Órgão
AL-MA
Ano
2023
Nível
Superior
Cargo
Técnico de Gestão Administrativa - Analista de Sistemas
A interface javax.servlet.Servlet define métodos que são acionados durante o ciclo de vida padrão do servlet.O método service() desta interface
  1. Asincroniza o acesso aos recursos compartilhados.
  2. Blibera todos os recursos alocados e utilizados pelo servlet.
  3. Cé idempotente quando utilizado para gerar páginas JSP.
  4. Dexecuta somente se o método init() já tiver sido concluído.
  5. Einvoca o método done() para registrar o fim da execução.
Revelar gabarito e comentário

GabaritoD — executa somente se o método init() já tiver sido concluído.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Ciclo de Vida do Servlet - Método service()

Gabarito: letra D. O método service() da interface javax.servlet.Servlet é executado somente após o método init() ter sido concluído com sucesso. Esta é a sequência padrão do ciclo de vida de um servlet.

A questão cobra o conhecimento básico do ciclo de vida de servlets Java: o contêiner chama init() uma vez para inicializar o servlet; depois, para cada requisição, chama service(), que roteia para doGet(), doPost() etc.; e, ao final, chama destroy() para liberar recursos.

  1. 1init()1 vez
  2. 2service()cada requisição
  3. 3doGet() / doPost()roteamento
  4. 4destroy()final
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A sincronização de acesso a recursos compartilhados não é responsabilidade do método service(). Embora o servlet possa lidar com concorrência, a sincronização é uma preocupação de implementação do desenvolvedor, não uma definição da interface. O método service() não sincroniza automaticamente nada.

Alternativa B — ❌ Incorreta

Liberar todos os recursos alocados e utilizados pelo servlet é função do método destroy(), não do service(). O destroy() é chamado pelo contêiner quando o servlet está sendo removido, permitindo a limpeza.

Alternativa C — ❌ Incorreta

Idempotência não é uma característica do método service(). Idempotência refere-se a operações que produzem o mesmo resultado independentemente de quantas vezes são executadas (ex.: métodos HTTP GET e PUT). O service() pode manipular requisições GET, POST etc., mas sua definição na interface não garante idempotência. Além disso, páginas JSP são compiladas para servlets, mas o método service() do Servlet não é inerentemente idempotente.

Alternativa D — ✅ Correta ⟵ GABARITO

Exatamente: o ciclo de vida define que init() deve ser chamado e completado antes que qualquer requisição seja processada. O contêiner só invoca service() após o init() terminar sem exceções. Caso init() falhe, o servlet não é colocado em serviço e service() nunca será chamado.

Alternativa E — ❌ Incorreta

Não existe um método done() na interface javax.servlet.Servlet. O método que sinaliza o fim do ciclo de vida é destroy(). A alternativa inventa um método inexistente.

NÃO CAIA NESSA!

A banca tenta confundir o candidato associando service() a funções que pertencem a outras fases do ciclo (destroy(), init()) ou a conceitos como sincronização e idempotência. Memorize a ordem: init()service() (loop) → destroy().

Gabarito: letra D.

Link permanente: /questoes/fg059287