Exception com mensagem NULL

6 respostas
A

Galera,

Criei uma super classe que extende o httpServlet, e coloquei os seguintes métodos:
1) doGet - que chama o método doPost passando o request e o response;
2) doPost - que chama o método doProcess passando o request, o responce, a session e o Application;
3) doProcess - que é uma abstract class.
4) TestaSite - Recebe o request, o response....... Para testar se o site está ativo ou não.

Também criei uma classe Index que extende a super classe, como no exemplo abaixo:

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.sql.*;
import java.lang.*;
import java.text.SimpleDateFormat;
import conexao.Conexao;

public class Index extends Super003
{
   public void doProcess(HttpServletRequest request, HttpServletResponse response, ServletContext aplicacao, HttpSession sessao) throws  ServletException, IOException
   {
      String controleSite = "xxx";
      try
      {
         controleSite = TesteSite(aplicacao, sessao, request, response);
         if (controleSite == "INATIVO")
         {
            response.sendRedirect("../divecenter/IndexMsg.jsp");
         }
         request.getRequestDispatcher("../divecenter/IndexNovo.jsp").forward(request, response);
      }
      catch (Exception e)
      {
         String sessaoID = (String)sessao.getId();
         String msgErro = "";
         msgErro = msgErro + "Servlet : Index.java   " + "<br>" + "<br>";
         msgErro = msgErro + "Método  : doProcess    " + "<br>" + "<br>";
         msgErro = msgErro + "Erro    : Exception    " + "<br>" + "<br>";
         msgErro = msgErro + e.getMessage()  + "<br>";
         PrintWriter out = response.getWriter();
         out.println("<HTML>");
         out.println("<HEAD>");
         out.println("<TITLE>ERRO</TITLE>");
         out.println("</HEAD>");
         out.println("<BODY>");
         out.println("<br>");
         out.println("<br>");
         out.println("MENSAGEM DE ERRO");
         out.println("<br>");
         out.println("<br>");
         out.println("<br>");
         out.println(msgErro);
         out.println("<br>");
         out.println("<br>");
         out.println("<br>");
         out.println("<br>");
         out.println("controleSite=" + controleSite);
         out.println("<br>");
         out.println("request=" + request);
         out.println("<br>");
         out.println("response=" + response);
         out.println("<br>");
         out.println("aplicação=" + aplicacao);
         out.println("<br>");
         out.println("sessão=" + sessao);
         out.println("</BODY>");
         out.println("</HTML>");
         return;
      }
   }
}

O problema é que quando vou executar o comando "request.getRequestDispatcher", o programa cancela por Exception, mas a mensagem é null.

Alguém saba o que pode estar acontecendo? Porque acontece o exception com mensagem null?

Abraços,

6 Respostas

E

provavelmente o objeto request está apontando para null. Verifique se ele foi inicializado ou recebeu o valor corretamente.

A

EddiE,

Acho que o problema não é esse.

Coloqueio o comanco abaixo antes do getRequestDispatcher:

String email  = (String)request.getParameter("email"); if (email == null) email = "";

Não ocorreu nenhum erro no comando acima, mas o erro no getRequestDispatcher, continuou…

Sempre que este servlet é chamado a primeira vez (via browser), realmente não recebe nenhum parametro. Mas o máximo que acontece é quando tento receber um parametro, este parametro vem null.

No exemplo que apresentei, enviei o objeto request para um método (TestaSite) da super classe, e não ocorreu nenhum erro na hora que chamei o método e nen na hora que o método foi executado.

Continuo com a pergunta:

Alguém sabe o que pode estar acontecendo?

Abraços,

D

Pq não necessariamente o Exception lançado tem um message pra mostrar.

Tenta colocar um e.printStackTrace() no catch pra saber qual Exception está lançando, ou então troca o getMessage() por toString() pra saber qual a bendita.

A

Fiz o que você recomendou.

O erro é NullPointerException.

O problema é que eu não estou conseguindo descobrir o porque está acontecendo isso.

Pelo que analisei, estão sendo executados os seguintes métodos:

  1. doGet (da super classe), que passa o request e reponse para o método doPost;
  2. doPost (também da super classe), que passa o request e reponse para o método abstract doProcess;
  3. doProcess (da classe que extends a super classe), onde ocorre o problema.

Dentro do método doProcess, quando executo o comando getRequestDispatcher, o erro acontece.

Porque isto está acontecendo, se eu passei o objeto request para o método doProcess?

Tem algum limite de métodos, para se passar o objeto como parametro?

Porque esse erro não acontece quando eu chamo, da classe que extends a super, um outro método que está definido na super classe, passanso o request e o response?

Abraços,

A

Para complementar a mensagem anterior.

Coloquei no catch, um display do request e response, para saber se estão nulos, o resultado foi o seguinte:

request=org.apache.coyote.tomcat4.CoyoteRequestFacade@1d6fbb3
response=org.apache.coyote.tomcat4.CoyoteResponseFacade@126d3df

Isto significa que o request está certo?

Abraços,

D

Deu NullPointerException em que linha?

Pelo que entendi, TesteSite é um método que retorna String, certo? Então ao invés de fazer if (controleSite == "INATIVO") faça if ("INATIVO".equals(controleSite))
Se bem que nesse caso seria melhor utilizar boolean.

Criado 25 de fevereiro de 2004
Ultima resposta 26 de fev. de 2004
Respostas 6
Participantes 3