Ola pessoas, toda vez q eu tento fazer a conexao no bd pelo jsp, retorna uma Connection null pra mim, nao sei o q pode ser… Eu coloquei o driver do banco de dados em …/tomcat/common/lib na maquina servidora. Detalhe eh q, eu jah testei a conexao em uma maquina cliente, acessando o bd na maquina servidora pela rede, e tudo correu bem, o problema eh qdo eu utilizo a mesma classe de conexao, mas agora com ele na maquinao servidora e eu tentando acessar pelo tomcat e jsp… Alguma sugestao?
Jsp+tomcat+Banco de dados
5 Respostas
O problema eh q nao estah encontrando o driver para a conexao, nao sei aonde eu devo colocar esse driver, ou se eu tenho q exportar o driver .jar junto com a aplicacao jsp?
eae blz???
cara vc jah tentou usar um Pool de conexão pra ver se isso para
fica melhor de gerenciar tb o acesso ao banco de dados
de suas aplicações JSP
dai vc configura o seu arquivo server.xml do tomcat
exemplo de configuração do Pool de conexão
utilizando um banco de dados Oracle
com o drive dentro de common/libs
<Context className="org.apache.catalina.core.StandardContext"
cachingAllowed="true"
charsetMapperClass="org.apache.catalina.util.CharsetMapper"
cookies="true" crossContext="true" debug="0"
** indicando para o Pool qual a aplicação que realizará acessos ao BD**
docBase="c:\jakarta-tomcat-4.1.27\webapps\jdbc"
mapperClass="org.apache.catalina.core.StandardContextMapper"
path="/jdbc"
privileged="false"
reloadable="true"
swallowOutput="false"
useNaming="true"
wrapperClass="org.apache.catalina.core.StandardWrapper">
<!-- aqui vc configura o nome da Base de dados -->
<Resource name="jdbc/teste" auth="Container"
type="javax.sql.DataSource"/>
<!-- aqui vc configura o nome da Base de dados -->
<ResourceParams name="jdbc/teste1">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<!-- aqui vc define o seu drive de conexão com o banco de dados -->
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<!-- endereço para conectar | host -->
<value>jdbc:oracle:oci8:@BD</value>
<!-- pelo IP , onde ? é um número
<value>jdbc:oracle:thin:@???.???.?.??:????:BD</value>
-->
</parameter>
<parameter>
<name>username</name>
<value>JSP</value>
</parameter>
<parameter>
<name>password</name>
<value>JSP</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
</ResourceParams>
</Context>
exemplo de uma classe que realiza os serviços de acesso ao banco de dados utilizando o pool de conexão definido
package RH;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import java.util.*;
public class dbPessoa {
static ResultSet rs = null;
static Statement stmt = null;
static Connection cnn = null;
static Context envContext = null;
// ----------------------------------------------------------
// OBSERVAR ESSE MÉTODO
static {
try {
Context initContext = new InitialContext();
envContext = (Context)initContext.lookup("java:/comp/env");
} catch (Exception e) {
System.out.println (e);
}
}
// ----------------------------------------------------------
// OBSERVAR ESSE MÉTODO
static Connection obterConexao () throws Exception {
System.out.println ("Recuperando conexão do pool...");
DataSource ds = (DataSource)envContext.lookup("jdbc/DU01_teste1");
return ds.getConnection ();
}
// ------------------------------------------------------------
// OBSERVAR ESSE MÉTODO
static void liberarConexao (Connection cnn) throws Exception {
// Devolve para o Pool.
cnn.close ();
}
// ------------------------------------------------------------
// os métodos abaixo são apenas uma exemplificação de acesso ao BD
public static Collection getColecaoPessoas () throws Exception {
try {
cnn = obterConexao ();
String sql = "SELECT * FROM tbPessoa";
stmt = cnn.createStatement ();
rs = stmt.executeQuery (sql);
// Irá armazenar uma coleção de pessoas.
Collection colPessoa = new Vector ();
while (rs.next ()) {
Pessoa pessoa = new Pessoa ();
pessoa.setId (new Integer (rs.getString ("ID")).intValue ());
pessoa.setIdade (new Integer (rs.getString ("IDADE")).intValue ());
pessoa.setNome (rs.getString ("NOME"));
colPessoa.add (pessoa);
}
return colPessoa;
} finally {
try {rs.close ();} catch (Exception e) {};
try {stmt.close ();} catch (Exception e) {};
liberarConexao (cnn);
}
}
// ------------------------------------------------------------
public static Pessoa getPessoaPorId (int id) throws Exception {
try {
cnn = obterConexao ();
String sql = "SELECT * FROM tbPessoa WHERE id = " + id;
stmt = cnn.createStatement ();
rs = stmt.executeQuery (sql);
// Irá armazenar as informações de uma pessoa.
Pessoa pessoa = null;
while (rs.next ()) {
pessoa = new Pessoa ();
pessoa.setId (new Integer (rs.getString ("ID")).intValue ());
pessoa.setIdade (new Integer (rs.getString ("IDADE")).intValue ());
pessoa.setNome (rs.getString ("NOME"));
}
return pessoa;
} finally {
try {rs.close ();} catch (Exception e) {};
try {stmt.close ();} catch (Exception e) {};
liberarConexao (cnn);
}
}
// ------------------------------------------------------------
public static void criarPessoa (Pessoa pessoa) throws Exception {
try {
cnn = obterConexao ();
String sql = "";
sql = sql + "INSERT INTO tbPessoa VALUES (";
sql = sql + pessoa.getId () + ", ";
sql = sql + "'" + pessoa.getNome () + "',";
sql = sql + pessoa.getIdade () + ")";
stmt = cnn.createStatement ();
stmt.execute (sql);
} finally {
try {stmt.close ();} catch (Exception e) {};
liberarConexao (cnn);
}
}
// ------------------------------------------------------------
public static void alterarPessoa (Pessoa pessoa) throws Exception {
// Executa um update da pessoa.
}
}
no seu arquivo da aplicação web.xml vc indica que a sua aplicação irá usar o pool de conexão que vc configurou no tomcat
< w e b - a p p >
...
< r e s o u r c e - r e f >
< d e s c r i p t i o n >Exemplo de acesso via Datasource< / d e s c r i p t i o n >
< ! - - n o m e d a b a s e d e d a d o s - - >
< r e s - r e f - n a m e >jdbc/teste1< / r e s - r e f - n a m e >
< r e s - t y p e >javax.sql.DataSource< / r e s - t y p e >
< r e s - a u t h >Container< / r e s - a u t h >
< / r e s o ur c e - r e f >
...
< / w e b - a p p >
:arrow: com isso vc define que a sua aplicação irá usar o pool que vc definiu no tomcat
acima dentro das tags eu tive que separar com um espaço pra conseguir postar o código 
espero ter ajudado em algo 
ps.: desculpa pelo número de post, naum consegui mandar em 1 soh
[]'s
Erko Bridee
ae valew… vo testar o pool de conexoes sim… minha aplicacao vai precisar…