Problemas com Erro 500 e consultas

Olá pessoal, muito obrigado a quem puder me dar uma ajuda!

Estou com o seguinte problema: meu professor está passando desenvolvimento com servlets utilizando JSDK2.0 e Xitami… essa foi a configuração que ele disponibilizou como instalacao na sala de aula mas eu nao encontro isso mais, hj td baseado em Tomcat… e aí que começam minhas dores de cabeça, já que nao consegui suporte dele em tomcat, apenas orienta na config. acima, pois o msm desconhece tomcat ainda… entao tem que correr atras sozinho…
Peguei o material do MHVILA para configurar meu contexto no apache 5.5, consegui rodar uma servlet AloMundo pelo meu contexto, mas a servlet que tenho no ambiente da sala de aula nao consigo fazer rodar com tomcat…
No modelo de trabalho com JSDK 2.0 e Xitami, a aplicação roda, insere no bd, e consulta todos, os outros metodos ainda estou sofrendo para acertar, mas no Tomcat nem consigo carregar a aplicação, o que tem me deixado desanimado pra valer pois gostaria msm de fazer rodar no Tomcat!!

Meus códigos:

Estrutura:
C:\Tomcat\conf\Catalina\localhost\dev.xml
c:\dir\dev\
c:\dir\dev\WEB-INF\index.html
c:\dir\dev\WEB-INF\acessatreinamento.html
c:\dir\dev\WEB-INF\classes\Treinamento.java
c:\dir\dev\WEB-INF\classes\Manutencao_Treinamento.java
c:\dir\dev\WEB-INF\web.xml

Compilacao:
javac -classpath “C:Tomcat\common\lib\servlet-api.jar” Treinamento.java Manutencao_Treinamento.java

web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
	<display-name>Desenvolvimento</display-name>
	<description>
		Descritor do contexto de desenvolvimento.
	</description>

	<servlet>
		<servlet-name>invoker</servlet-name>
		<servlet-class>
			org.apache.catalina.servlets.InvokerServlet
		</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>0</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>invoker</servlet-name>
		<url-pattern>/servlet/*</url-pattern>
	</servlet-mapping>
</web-app>

dev.xml:

<?xml version="1.0" encoding="iso-8859-1"?>
<Context path="/dev" docBase="C:\dir\dev"
 debug="0" reloadable="true" crossContext="true">
	<Logger className="org.apache.catalina.logger.FileLogger"
	 prefix="localhost_dev_log." suffix=".txt" timestamp="true" />
</Context>

AloMundoServ.java (isso funcionou no meu contexto com tomcat!!! só isso tb… :frowning: )

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class AloMundoServ extends HttpServlet
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        String alo = "Al&ocirc; Mundo!";
        PrintWriter out = response.getWriter();

        out.println("<html>");
        out.println("<body><h1>" + alo + "</h1></body>");
        out.println("</html>");
    } // doGet
} // class AloMundoServ

Treinamento.java:

//CONTROLE DE TreinamentoS

import java.io.*;
import java.sql.*;

public class Treinamento
{
	private
	String codigo = null; //codigo do Treinamento
	String nome = null; //nome do Treinamento
	String duracao = null; //duracao do Treinamento
	String data_inicio = null; // data_inicio do Treinamento
	String data_fim = null; // data_fim do do Treinamento
	String instrutor = null; // instrutor do Treinamento
	double preco = 0; // preco do Treinamento
    Connection conexao; // chamada da conexao para banco de dados


	//CONSTRUTOR
	public Treinamento(String c, String n, String d, String di, String df, String i, double pc, Connection co)
	{
		codigo = c;
		nome = n;
		duracao = d;
	  	data_inicio = di;
	  	data_fim = df;
	  	instrutor = i;
	  	preco = pc;
	  	conexao = co;
	}

	public Treinamento(String c, Connection co)
	{
	   	codigo = c;
		conexao = co;
	}
	   
	public Treinamento(Connection co)
 	{

		conexao = co;
	}


	// DEFINIÇÃO DOS METODOS DE ACESSO
	public String get_codigo()
		{ return codigo; }
	public String get_nome()
		{ return nome;}
	public String get_duracao()
		{ return duracao;}
	public String get_data_inicio()
		{ return data_inicio;}
	public String get_data_fim()
		{ return data_fim;}
	public String get_instrutor()
		{ return instrutor;}
	public double get_preco()
		{ return preco;}
	public void set_preco(double pc)
	{preco=pc;}


	//METODO ARMAZENAR
	public boolean armazenar()
	{
		boolean aux = false;
	    	try{
		String sql ="insert into Treinamento values('"+codigo+"','"+nome+"','"+duracao+"','"+data_inicio+"','"+data_fim+"','"+instrutor+"',"+new Float(preco).toString() +")";
	 
	   		Statement st = conexao.createStatement();
	   		st.execute(sql);
	    		st.close();
	    		aux=true;
		}catch (SQLException e){System.out.println("ERRO: "+e);aux=false;}
	   	return (aux);
	} // FIM DO METODO ARMAZENAR


	//METODO ATUALIZAR
	public boolean update()
	{
		boolean aux = false;
	    	try{
		String sql ="update Treinamento set nome='"+nome+"',duracao='"+duracao+"',data_inicio='"+data_inicio+"',data_fim='"+data_fim+"',instrutor='"+instrutor+"',preco='"+new Float(preco).toString()+"' where '"+codigo+"'=codigo";
	   	Statement st = conexao.createStatement();
	   	st.execute(sql);
	    	st.close();
	    	aux=true;
		}catch (SQLException e){System.out.println("ERRO: "+e);aux=false;}
	   	return (aux);
	} // FIM DO METODO ATUALIZAR


	//METODO DELETAR
	public boolean deletar()
	{
     		boolean aux = false;
	   	try {
			String sql="delete from Treinamento where '"+codigo+"'=codigo";
 	   		Statement st = conexao.createStatement();
	   		st.execute(sql);
	    		st.close();
	    		aux=true;
		}catch (SQLException e){System.out.println("ERRO: "+e);aux=false;}
	   	return (aux);
	} // FIM DO METODO DELETAR


	//METODO CONSULTAR
	public boolean consultar()
	{
		boolean aux = false;
		try {
			String sql="select * from Treinamento where codigo='"+codigo+"'";
			Statement st = conexao.createStatement();
	   		ResultSet RS=st.executeQuery(sql);
			if(RS.next())
			{
	   			aux=true;
				nome = RS.getString("nome");
				duracao = RS.getString("duracao");
           		data_inicio = RS.getString("data_inicio");
				data_fim = RS.getString("data_fim");
				instrutor = RS.getString ("instrutor");
				preco = RS.getFloat("preco");
		     		st.close();
		    	}
		     	else
		     	{
				aux=false;
		     	}
		} catch (SQLException e) {System.out.println("ERRO: "+e); aux=false;}
		return (aux);
	} // FIM DO METODO CONSULTAR



	//METODO CONSULTAR TODOS	
	public ResultSet consultar_todos()
	{
	 	ResultSet RS = null;
	 	try {
		 	String sql = "Select * from Treinamento";
	 		Statement st = conexao.createStatement();
	  		RS=st.executeQuery(sql);
		} catch (SQLException e) {System.out.println("ERRO: "+e);}
	 	return RS;
	 }// FIM DO METODO CONSULTAR TODOS


} // FIM DA CLASSE Treinamento

Manutencao_Treinamento.java:

//SERVLET MANUTENCAO_Treinamento.JAVA

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.util.*;


public class Manutencao_Treinamento extends HttpServlet 

	{

	private Connection conexao = null;


	Treinamento treinamento;

	public void init(ServletConfig cfg)throws ServletException
	{
		super.init(cfg);
		try{
	   		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	   		conexao=DriverManager.getConnection("jdbc:odbc:Treinamento");
		}catch (Exception e) {System.out.println(e.getMessage());}
	}
	

	// DEFININDO METODO POST
	public void doPost(HttpServletRequest req, HttpServletResponse res)
		throws ServletException, IOException
	{
		String Sopcao = null;
                String c = null;
                String n = null;
                String d = null;
                String di = null;
                String df = null;
                String i = null;
		double pc = 0;

		PrintWriter	out;

		//especifica conteudo de retorno como pag. html

		res.setContentType("text/html");

		//capta canal de saida para Treinamento

		out = res.getWriter();


		//verifica opcao escolhida na pagina html AcessaTreinamento.html

		//OPCAO CADASTRAR
		Sopcao=req.getParameter("botao");
		if (Sopcao.equals("Cadastrar"))
		{
		
		//captura parametros do Treinamento
			c= req.getParameter("codigo");
			n= req.getParameter("nome");
			d= req.getParameter("duracao");
			di= req.getParameter("data_inicio");
			df= req.getParameter("data_fim");
			i= req.getParameter("instrutor");
			pc= new Float(req.getParameter("preco")).floatValue();

			//cria obj Treinamento
			treinamento = new Treinamento(c,n,d,di,df,i,pc,conexao);

		  	//montar comando para inserir
		  	out.println("<HTML>");
             		out.println("<BODY>");

			//armazenar obj
			if (treinamento.armazenar())
				{ out.println("<HI>Registro de Treinamento inserido com sucesso!!</HI>");}
			else
   				{ out.println("<HI>Registro de Treinamento não foi inserido corretamente!! Tente novamente!!</HI>");}

	 		out.println("</BODY>");
			out.println("<HTML>");
		}// FIM DA OPÇAO CADASTRAR



		//OPCAO CONSULTAR
		if (Sopcao.equals("Consultar"))
		{
			//capturar parametros passados do Treinamento
			c=req.getParameter("codigo");

			//cria o obj Treinamento
		
			treinamento=new Treinamento(c, conexao);

	  		//interface humana
	  		out.println("<HTML>");
	  		out.println("<BODY>");
	
         		//consultar obj
			if (treinamento.consultar())
			{
				out.println("nome:"+treinamento.get_nome());
				out.println("duracao:"+treinamento.get_duracao());
			 	out.println("data_inicio:"+treinamento.get_data_inicio());
				out.println("data_fim:"+treinamento.get_data_fim());
				out.println("instrutor:"+treinamento.get_instrutor());
				out.println("preco:"+treinamento.get_preco());
			}	
			else
			{		
				out.println("<HI>Registro inexistente</HI>");
			}

			out.println("</BODY>");
		    	out.println("<HTML>");
		}//fim da opcao consultar
	


		//OPCAO CONSULTAR TODOS
		if(Sopcao.equals("Consultar_todos"))
		{

		 	//cria obj Treinamento

			treinamento=new Treinamento (conexao);

			//interface humana

			out.println("<HTML>");

	   		out.println("<BODY>");

	   		//consultar obj
	   		ResultSet RS = treinamento.consultar_todos();

	   		if (RS!=null)
	   		{						
				try 
				{
		  			while(RS.next())
					{
					out.println("codigo:"+RS.getString("codigo"));
					out.println("nome:"+RS.getString("nome")); // nome
					out.println("duracao:"+RS.getString("duracao"));    //duracao
					out.println("data_inicio:"+RS.getString("data_inicio"));	    // data_inicio  				
					out.println("data_fim:"+RS.getString("data_fim"));      // data_fim         
					out.println("instrutor:"+RS.getString("instrutor"));            // instrutor  
					out.println("preco:"+RS.getFloat("preco"));
					out.println("<br>");
					out.println("_________________________________________");
					out.println("<br>");
			   		}
				}
				catch (Exception e){ out.println(e);}
	   		}
			else
	   		{
				out.println("<HI>registro de Treinamento com problemas!!</HI>");
			}
	 	  	out.println("</BODY>");
   	  		out.println("<HTML>");
		}//fim da opção consultar todos



		//OPCAO ALTERAR (UPDATE)
		if (Sopcao.equals("Alterar"))
		{
		
			//captura parametros do Treinamento
			c= req.getParameter("codigo");
			n= req.getParameter("nome");
			d= req.getParameter("duracao");
			di= req.getParameter("data_inicio");
			df= req.getParameter("data_fim");
			i= req.getParameter("instrutor");
			pc= new Float(req.getParameter("preco")).floatValue();

			//cria obj Treinamento

			treinamento = new Treinamento(c,n,d,di,df,i,pc,conexao);

		  	//montar comando para inserir

		  	out.println("<HTML>");
             		out.println("<BODY>");

			//armazenar obj
			if (treinamento.update())
				{ out.println("<HI>Registro do Treinamento alterado com sucesso!!</HI>");}
			else
   				{ out.println("<HI>Registro do Treinamento não foi alterado!! Tente Novamente</HI>");}

	 		out.println("</BODY>");
			out.println("<HTML>");
		}// Fim da opção alterar (update)
		

		
		// OPCAO DELETAR (APAGAR)
		if (Sopcao.equals("Apagar"))
		{
		
			//captura parametros do Treinamento

			c= req.getParameter("codigo");
			
			//cria obj Treinamento

			treinamento = new Treinamento(c,conexao);

		  	//montar comando para inserir

		  	out.println("<HTML>");
             		out.println("<BODY>");

			//armazenar obj
			if (treinamento.deletar())
				{ out.println("<HI>Registro de treinamneto excluido com sucesso!!</HI>");}
			else
   				{ out.println("<HI>Registro de Treinamento não foi apagado!! Tente novamente!!</HI>");}

	 		out.println("</BODY>");
			out.println("<HTML>");
		}// Fim da opção deletar

	}//fim do metodo


}//fim da classe Manutencao_Treinamento.java

AcessaTreinamento.html:

<HTML>
  <BODY>
   
<FORM
    ACTION="http://localhost:8080/dev/servlet/Manutencao_Treinamento" METHOD="POST">




  Codigo: 
  <input type=text name="codigo" size=12>
    <br>
    Nome: <input type text name = "nome" size=30>
    <br>
    Duracao: <input type text name = "duracao" size=12>
    <br>
    Data Inicio: <input type text name = "data_inicio" size=12>
    <br> 
    Data Fim: <input type text name = "data_fim" size=12>
    <br> 
    Instrutor: <input type text name = "instrutor" size=30>
    <br> 
    Preço: <input type text name = "preco" size=12>
    <br> 
	<INPUT TYPE="submit" NAME = botao VALUE="Cadastrar">
    	<INPUT TYPE="submit" NAME = botao VALUE="Consultar">
    	<INPUT TYPE="submit" NAME = botao VALUE="Consultar_todos">
    	<INPUT TYPE="submit" NAME = botao VALUE="Alterar">
    	<INPUT TYPE="submit" NAME = botao VALUE="Apagar">
  </FORM>
 </BODY>
</HTML>

Erros:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
	Treinamento.consultar_todos(Treinamento.java:145)
	Manutencao_Treinamento.doPost(Manutencao_Treinamento.java:139)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:420)
	org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:170)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.25 logs.
Apache Tomcat/5.5.25

Muito obrigado msm a quem puder me dar uma luz, pq ja nao sei mais o que fazer, to perdidao depois de tanto tentar rodar no tomcat e nada e ver ele com rodando minha aplicacao com xitami essa msm aplicacao e ela subir…

Statement st = conexao.createStatement();
acho que é nessa linha no método consultar_todos…
rpovavelmente tá sem comunicação com o teu banco de dados…
testa essa classe Connection ai…
acho que você não está atribuindo valores a ela ou algo assim…
verifica se o driver do banco de dados está no classpath também…

Olá obrigado pela ajuda, pelo que estou vendo todas conexoes ao BD está falhando, nao sei mais o que fazer, agora estou com o erro 404… nunca pensei que fosse tao dificil conectar ao bd com tomcat, estou desistindo ja, sinceramente…

HTTP Status 404 - /dev/servet/Manutencao_Treinamento

--------------------------------------------------------------------------------

type Status report

message /dev/servet/Manutencao_Treinamento

description The requested resource (/dev/servet/Manutencao_Treinamento) is not available.

-------------------------------------------------------------------------------

Apache Tomcat/5.5.25

obrigado… :frowning: