Bom dia.
Você nunca deve anular o método service() (A não ser que seja necessário, por motivos muito especiais...).
Quando algum usuário faz uma requisição para um Servlet, o WebContainer faz a chamada primeiramente no método service() dele, o método service() faz várias verificações, e finalmente, decide se encaminha a chamada para o método doGet() ou doPost().
Devemos considerar o seguinte: O método service() é um método de callback e não deve ser sobrescrito. O desenvolvedor deve preocupar-se com os métodos doGet() ou doPost(). Caso o tipo do método da requisição HTTP não seja importante, faça um "funil" e crie outro método auxiliar. Por exemplo:
doGet(HttpServletRequest request, HttpServletResponse response) {
this.processRequest(request, response);
}
doPost(HttpServletRequest request, HttpServletResponse response) {
this.processRequest(request, response);
}
// este método deve ser criado para receber tanto as requisições get quanto post...
processRequest(HttpServletRequest request, HttpServletResponse response) {
// aqui vai toda a lógica do servlet...
// qualquer requisição, seja ela por Get ou Post "cairá" aqui.
}
O mais importante a saber é que o método service() quem chama é o WebContainer, ele faz os procedimentos internos dele, e depois encaminha para os métodos do desenvolvedor.
Recomendo a leitura do livro "Use a Cabeça! Servlets & JSP - Basham, Sierra e Bates".
Abraço,
Visite o Blog do Perereca: http://www.blogdoperereca.blogspot.com