[Problemas para subir uma aplicação Tomcat + SQL Server 2000]

9 respostas
G

Moçada, saudações.

Estou com um pepino grandasso aqui na empresa.

Temos uma aplicação de força de vendas que fizeram a algum tempo atrás, não documentaram e o programador sabe Deus onde está.

Fato é que o servidor que rodava essa aplicação parou de funfar dai subi os serviço do TOMCAT em outra máquina, configurei o Banco de dados SQL2000 e coloquei o JDBC, e funcionou em partes. Ele carrega a aplicação, mas na hora de fazer login para carregar os menus e fazer todos os procedimentos, o TOM CAT está retornando um erro.

Pelo que pude entender, parece que a aplicação não está conectando com o SQL para poder executar a QUERY que valida o usuario.

Estou colando neste post o erro e o codigo fonte para que possam visualizar e me dar uma ajuda

org.apache.jasper.JasperException: An exception occurred processing JSP page /Logar.jsp at line 87

84:            " where G.GRUPO = H.GRUPO " +

85:            " and MATVEND = " + request.getParameter(login);

86:

87:     ResultSet rs = con.getSt().executeQuery(sql);

88:    //ResultSet rs = stm.executeQuery(sql);

89:

90:    if (rs.next()==false)
Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NullPointerException

org.apache.jsp.Logar_jsp._jspService(Logar_jsp.java:149)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

O DODIGO FONTE SEGUE ABAIXO

<%@ page contentType=“text/html” language=“java” import=“java.sql.*”%>
<jsp:useBean id=“con” class=“Pacote.Conexao”/>

::MOBILE VENDAS:: body, td, a:link, a:visited { font-family: Verdana; font-size: 10px; color: #000000; text-decoration: none; } a:hover{ color: #FF0000; text-decoration: none; } input { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; background-color: #FFFFFF; border: 1px solid #000000; } .style1 {color: #FFFFFF} a:link { color: #000000; text-decoration: none; } a:visited { text-decoration: none; } a:active { text-decoration: none; } .style2 {color: #000000}
   
<%
String codigo = "#!@#@!#!@#!@#!@#!@77%%!@#$"; // Login       
String login = "#!@#@!#!@#!@#!@#!@77%%!@#$"; // Login
String senha = "7854564987128789789"; // Senha
String grupo = "7854564987128789789"; // Grupo
String nomeGrupo = "7854564987128789789"; // Grupo
//Conexao con = new Conexao();
if (request.getParameter(login).toUpperCase().compareTo(ADMINISTRADOR)==0)

if (request.getParameter(senha).toUpperCase().compareTo(VINICIUS)==0)

{

session.putValue(codigo, null); //Grava a session com o Login

session.putValue(loginUsuario, ADMINISTRADOR); //Grava a session com o Login

session.putValue(senhaUsuario, VINICIUS); //Grava a session com a Senha

session.putValue(grupoUsuario, 1); //Grava a session com a Senha

session.putValue(nomeGrupo, DESENVOLVEDOR); //Grava a session com a Senha

out.println(“”); //Exibe um código javascript para redireionar ao painel

}
try{

<a href="//Class.forName">//Class.forName</a>(“sun.jdbc.odbc.JdbcOdbcDriver”);

//con = DriverManager.getConnection(“jdbc:odbc:SigsPalm”,null,null);

//con = new Conexao();
//Statement stm = con.createStatement ();

String sql = “select MATVEND , NOMEVEND, SENHA , H.GRUPO, DESCRICAO from HEADER H, GRUPO G” +
" where G.GRUPO = H.GRUPO " +
" and MATVEND = " + request.getParameter(“login”);

[b]***LINHA 87***[/b] ResultSet rs = con.getSt().executeQuery(sql);

//ResultSet rs = stm.executeQuery(sql);

if (rs.next()==false)

{

out.println(“”); //Exibe um código javascript para redireionar ao painel

out.println(“”); //Exibe um código javascript para redireionar ao painel

}

else

{

codigo = rs.getString(MATVEND);

login = rs.getString(NOMEVEND);

senha = rs.getString(SENHA);

grupo = rs.getString(GRUPO);

nomeGrupo = rs.getString(DESCRICAO);

}

String login_form = request.getParameter("login"); // Pega o Login vindo do formul&aacute;rio   
String senha_form = request.getParameter("senha"); //Pega a senha vinda do formul&aacute;rio    
//if(login_form.equals(login) && senha_form.equals(senha)){ //Caso login e senha estejam corretos...
if(senha_form.equals(senha)){ //Caso login e senha estejam corretos...
    out.println("Logado com sucesso."); //Mostra na tela que foi logado com sucesso
    session.putValue("codigo", codigo); //Grava a session com o Login
    session.putValue("loginUsuario", login); //Grava a session com o Login
    session.putValue("senhaUsuario", senha); //Grava a session com a Senha
    session.putValue("grupoUsuario", grupo); //Grava a session com a Senha
    session.putValue("nomeGrupo", nomeGrupo); //Grava a session com a Senha
    out.println("<script>document.location.href='Logado.jsp';</script>"); //Exibe um c&oacute;digo javascript para redireionar ao painel
} else { //Se estiverem incorretos...
out.println("Login ou senha inv&aacute;lidos. <a href='index.jsp'>Voltar</a>"); //Exibe na tela e pede para voltar
}
<a href="//con.close">//con.close</a>();

}

catch(SQLException e)

{

e.printStackTrace();

}

%>

 

Mobile Vendas - Exis Servicos Ltda - ([telefone removido]



9 Respostas

B

me parece que seu objeto con esta nulo…

pq esta tudo comentado ??

fscpv

Amigo,

Ponha seu codigo entre as tags

Para que possamos visualizarmos melhor!

A

Boa tarde,

Como primeira dica, quando for postar seu código, de uma lida neste link http://www.guj.com.br/posts/list/50115.java

Bom referente a seu problema pelo que entendi está dando erro de java.lang.NullPointerException, ou seja está tentando acessar um objeto que não está criado. O que eu não entendi foi que as linhas de conexão estão comentadas… veja

String codigo = "#!@#@!#!@#!@#!@#!@77%%!@#$"; // Login String login = "#!@#@!#!@#!@#!@#!@77%%!@#$"; // Login String senha = "7854564987128789789"; // Senha String grupo = "7854564987128789789"; // Grupo String nomeGrupo = "7854564987128789789"; // Grupo //Conexao con = new Conexao(); <<<<<<<<<<<<<<<< Está comentado?????

E varios outros lugares a parte de conexão está comentado, eu não entendi porque isto…
Não sei se é porque não está com a tag CODE, mas achei o código bem bagunçado, e utilizando algumas coisas que não é recomendadas.
Seria interessante depois melhorar isto…

Mas para tentar resolver seu problema tente descomentar a linhas de conexoes… !!! E de um print na tela com o objeto con para verificar se ele está com alguma referencia, ou seu objeto é null

Caso não ficou claro, poste novamente as duvidas,
Att

G

Pessoal, saudações.

Primeiramente me perdoem por ter postado o codigo dessa forma.

Bom, quando desenvolveram o programa eu não estava aqui na empresa e sei quase nada de JAVA, o que pude interpretar foi lendo mesmo os LOGS de erro e pesquisando na internet.

A respeito das linhas comentadas, se eu retirar os cometários, aparecerá outros erros.

NÃO ENTENDI

[size=18]Segue abaixo o erro 500 depois de ter tirado os comentários.[/size]
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 78 in the jsp file: /Logar.jsp
Type mismatch: cannot convert from Connection to Conexao

75: 
76: try{
77:    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
78:    con = DriverManager.getConnection("jdbc:odbc:SigsPalm",null,null);                
79:    
80:    con =  new Conexao();
81:    Statement stm = con.createStatement ();

An error occurred at line: 80 in the jsp file: /Logar.jsp
Conexao cannot be resolved to a type

77:    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
78:    con = DriverManager.getConnection("jdbc:odbc:SigsPalm",null,null);                
79:    
80:    con =  new Conexao();
81:    Statement stm = con.createStatement ();
82:    
83:    String sql = "select MATVEND , NOMEVEND, SENHA , H.GRUPO, DESCRICAO from HEADER H, GRUPO G" +

An error occurred at line: 81 in the jsp file: /Logar.jsp
The method createStatement() is undefined for the type Conexao

78:    con = DriverManager.getConnection("jdbc:odbc:SigsPalm",null,null);                
79:    
80:    con =  new Conexao();
81:    Statement stm = con.createStatement ();
82:    
83:    String sql = "select MATVEND , NOMEVEND, SENHA , H.GRUPO, DESCRICAO from HEADER H, GRUPO G" +
84:            " where G.GRUPO = H.GRUPO " +
Stacktrace:

org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)

org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)

org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)

org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
A

Por favor poste o código da classe Conexao

O que está parecendo, que alguns daqueles comandos foram colocados de teste… e alguns comentados… ou seja está baguncado… digo isto por causa disto aqui veja

con = DriverManager.getConnection("jdbc:odbc:SigsPalm",null,null); <<< AQUI RETORNA UM OBJETO Connection con = new Conexao(); <<<< AQUI RETORNA UM OBJETO Conexao

Por isto é interessante vermos a classe Conexao para conseguir entender o que foi implementado nela… se é toda a conexao com o banco, ou apenas uma parte, etc.

Att

A

Só para complementar, repare que o erro fala exatamente isto, que vc esta tentando jogar um objeto Connection em um objeto Conexao, e como eles são tipos incompativeis, da erro de convert

Type mismatch: cannot convert from Connection to Conexao

Como disse na resposta acima… poste a classe Conexao, e vai ficar muito mais facil te ajudar.

Att

G

Segue a classe conexão

package Pacote;

import java.sql.*;

public class Conexao
{

    public Connection getConn()
    {
        return conn;
    }

    public void setConn(Connection con)
    {
        conn = con;
    }

    public Statement getSt()
    {
        return st;
    }

    public void setSt(Statement s)
    {
        st = s;
    }

    public String InserirMenu(String Grupo, String Menu, String SubMenu)
    {
        String sql = "";
        try
        {
            if(Menu != null)
            {
                sql = "insert into MENU (GRUPO , COD_LINK , MENU)VALUES (" + Grupo + " , " + "" + Menu + " , " + "" + SubMenu + " ) ";
                st.executeUpdate(sql);
            }
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        return "";
    }

    public String InserirGrupo(String Grupo, String Descricao, String Nivel)
    {
        String sql = "";
        try
        {
            if(Descricao != null)
            {
                sql = "insert into GRUPO (GRUPO , DESCRICAO, NIVEL)VALUES ( " + Grupo + ",'" + Descricao + "' , " + Nivel + ")";
                st.executeUpdate(sql);
            }
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        return "";
    }

    public String InserirLink(String ID, String LINK, String PAGINA)
    {
        String sql = "";
        try
        {
            if(ID != null)
            {
                sql = "insert into LINK (ID_LINK, NOM_LINK, PAGINA)VALUES (" + ID + " , " + "'" + LINK + "' ," + "'" + PAGINA + "' )";
                st.executeUpdate(sql);
            }
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        return "";
    }

    public String AlterarUsuario(String ID, String Grupo)
    {
        String sql = "";
        try
        {
            if(ID != null)
            {
                sql = "update HEADER set GRUPO = " + Grupo + " where MATVEND = " + ID;
                st.executeUpdate(sql);
            }
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        return "";
    }

    public String ExcluirMenu(String Grupo, String Menu, String SubMenu)
    {
        String sql = "";
        try
        {
            if(Menu != null)
            {
                sql = "delete from  MENU ";
                sql = sql + " WHERE GRUPO = " + Grupo;
                sql = sql + " AND COD_LINK = " + Menu;
                if(SubMenu.compareTo("null") != 0)
                    sql = sql + " AND MENU = " + SubMenu + "";
                st.executeUpdate(sql);
            }
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        return "";
    }

    public String ExcluirLink(String ID)
    {
        String sql = "";
        try
        {
            sql = "delete from  LINK ";
            sql = sql + " WHERE ID_LINK= " + ID;
            st.executeUpdate(sql);
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        return "";
    }

    public String ExcluirGrupo(String ID)
    {
        String sql = "";
        try
        {
            sql = "delete from  GRUPO ";
            sql = sql + " WHERE GRUPO= " + ID;
            st.executeUpdate(sql);
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        return "";
    }

    public Conexao()
        throws Exception
    {
        try
        {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=SigsPalm", "vinicius", "vinicius");
            st = conn.createStatement();
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
    }

    private Connection conn;
    private Statement st;
    private String sql;
}
G

pessoal, saudações

Quero agradeçer a ajuda de vocês com o meu problema mas encontrei a solução.

A senha no banco de dados estava errada, quando decompilei meu codigo conexão.class ví isso na linha 160.

Agora a aplicação está funcionando novamente.

Um forte abraço a todos.

A

Blz que bom que foi resolvido…

Fica apenas as dicas para melhorar o código quando tiver uma oportunidade… !!! pois estava bem baguncado…

Precisando estaremos por ai.

Att

Criado 22 de janeiro de 2010
Ultima resposta 22 de jan. de 2010
Respostas 9
Participantes 4