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
- A)sincroniza o acesso aos recursos compartilhados.
Errada, porque service() não sincroniza acesso a recursos compartilhados; isso é uma preocupação de implementação, não uma função da interface Servlet.
- B)libera todos os recursos alocados e utilizados pelo servlet.
Errada, porque quem libera recursos ao final do ciclo de vida é o método destroy(), não o service().
- C)é idempotente quando utilizado para gerar páginas JSP.
Errada, porque a referência a JSP não define a regra geral do método service(), que pertence ao ciclo de vida do servlet na API Servlet.
- D)executa somente se o método init() já tiver sido concluído.
Certa, porque o método service() só pode ser acionado depois que o método init() foi concluído com sucesso.
- E)invoca o método done() para registrar o fim da execução.
Errada, porque a interface Servlet não prevê método done(); o encerramento do servlet é tratado por destroy().
Gabarito: D
A interface javax.servlet.Servlet organiza o ciclo de vida do servlet em três momentos clássicos: init(), service() e destroy(). Primeiro o servidor cria e inicializa o servlet; depois ele passa a atender as requisições; no fim, libera os recursos. Simples, elegante e sem mistério de prova. O ponto central aqui é que o método service() não aparece do nada: ele só é chamado depois que o init() terminou com sucesso. Em termos práticos, isso faz sentido porque o servlet precisa estar pronto para receber requisições antes de começar a trabalhar. A própria especificação da API Servlet segue essa lógica de ciclo de vida padrão. Por isso, a alternativa D está correta. Se o init() ainda não concluiu, o servlet ainda não foi preparado para atender chamadas de service(). A ordem importa bastante e é exatamente isso que a banca explora quando mistura funções do ciclo de vida com ideias genéricas de execução. As demais alternativas tentam confundir você com recursos de sincronização, liberação de memória ou métodos que nem fazem parte da interface Servlet. Aqui vale guardar a tríade: init prepara, service atende, destroy encerra.