Pessoal, estou com um erro no tomcat. Vou descrevê-lo…se alguém já viu algo assim e puder dar uma ajuda, será bem vinda.
Criei abaixo de webapps o diretorio hmm, dentro dele o web-inf com o arquivo web.xml. Dentre do web-inf criei o diretório classes, sendo criado a estrutura brcom estehmm em virtude de uma instrução package br.com.teste.hmm dentro das minhas classes. Compilo e gero as classes nesse pacote. No jsp faço:
e obtenho o erro abaixo. A classe HMMAluno_MD faz acesso a banco de dados e o no console do tomcate obtenho um erro de banco de dados:
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
Alguém já viu algo parecido e pode me ajudar ?
type Exception report
message Internal Server Error
description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: class br.com.teste.hmm.HMMAluno_MD : java.lang.NullPointerException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:463)
at org.apache.jsp.busca_0005fparecer$jsp._jspService(busca_0005fparecer$jsp.java:258)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
O classes12.jar do Oracle está no meu classpath. O arquivo está em: C:oracleora92jdbclibclasses12.jar. Essa caminho está no classpath. Devo colocá-lo no diretório lib do Tomcat e da minha aplicação ?
java.lang.NullPointerException
Você tá inicalizando todas as variáveis? posta o código do bean…
Pode ser que você esteja tentando usar uma váriável que não foi inicializada…
Kra como diria o Jack o Estripador: “Vamos por partes…” (adoro essa frase)
Seguinte:
primeiro veja se o seu tomcat está compilando páginas jsp simples coisas do tipo out.println(“Oi, eu sou um teste…”).
Agora tente criar uma conesão com o banco de dados dentro de uma página jsp (deus me perdoe, mas é só um teste…)
// Importe todos os pacotes necessários
// Driver do Oracle, java.sql.* e por ai vai...
<%@ page import="" %>
<%@ page import="" %>
<%@ page import="" %>
<%
new oracle.jdbc.driver.OracleDriver();
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:taurus","scott","tiger");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select 1 as num from dual");
if (rs.next()) out.println(rs.getInt("num"));
%>
PS: Se funcionar destrua esta página e não conte para ninguém que vc fez isso… heehehee.
Se correr tudo bem até aki, significa que seu tomcat está funcionando e que o driver do Oracle foi carregado sem problemas…
Agora crie uma classe de teste e crie um novo objeto referenciando o seu bean, afinal um bean é uma classe como outra qualquer.
Veja um detalhe se o este é o seu bean todo tá faltando importar o driver do oracle, afinal quem tá acessando o oracle não é o Jsp é o bean…
Outra coisa, lembre-se que por convenssão toda classe em java deve começar com a primeira letra maiúscula…
public class Dao {
// codigo aki...
}
a classe ficaria mais ou menos assim:
public class Teste {
public static void main(String[] args) {
Dao d = new Dao();
if (d.operacao())
System.out.println("Legal...");
else
System.out.println("Não funcionou...");
}
}
Dá uma trabalhada nisso, que agente vai acompanhando aki…
Na segunda tentativa, ou seja na conexao na pagina jsp, o seguinte erro foi lancado
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: -1 in the jsp file: null
Generated servlet error:
[javac] Since fork is true, ignoring compiler setting.
[javac] Compiling 1 source file
[javac] Since fork is true, ignoring compiler setting.
[javac] C:Program FilesApache GroupTomcat 4.1workStandalonelocalhosthfb este_jsp.java:45: package oracle.jdbc.driver does not exist
[javac] new oracle.jdbc.driver.OracleDriver();
[javac] ^
[javac] 1 error
Tentei importar o pacote oracle.jdbc.driver.*; mas o erro continua e diz que este pacote nao existe.
Bom, na variavel CLASSPATH eu setei os zips classes12.zip e nls_charset12.zip, conforme instrucoes do oracle, copie e setei estes pacotes também no lib do web-inf do diretorio da minha aplicacao e também coloquei estes pacote na commom/lib do tomcat. OK?
Kra, onde devo olhar para solucionar este problema…
Porra, voce nao sabe como fiquei feliz… Estou sorrindo a toa…
Agora, isto tudo foi porque as classes do driver nao estavam sendo encontradas?
Enfim, onde devo coloca-las? Devo distribuir elas junto com a aplicacao? E porque a extensao .zip nao foi encontrada?
Resumindo, se possivel me da uma breve explicacao do que aconteceu e qual maneira correta.
Outra coisa, nao querendo abusar mas ja abusando, no inicio do topico voce deixou claro que se conectar via jsp nao e uma boa escolha, pergunto qual e o melhor metodo e mais utilizado para se conectar a um BD. Eh da maneira que eu fiz, via um JavaBean?