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… )
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ô 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…