Buenas, Tengo mi clase BaseDatos.java en donde implemento conexión pool con el dbcp, en la carpeta lib de tomcat 6 copié los .jar: commons-dbcp y commons-pool, modifique el web.xml de mi carpeta de aplicación y el context.xml, incluso lo copie en el lib de jdk 1.6, pero al compilar la clase con el jcreator, me sale el siguiente error: C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\prueba\WEB-INF\classes\BaseDatos.java:10: package org.apache.commons.dbcp does not exist import org.apache.commons.dbcp.BasicDataSource; ^ C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\prueba\WEB-INF\classes\BaseDatos.java:60: cannot find symbol symbol : class BasicDataSource location: class clinica.BaseDatos BasicDataSource basicDataSource = new BasicDataSource(); ^ C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\prueba\WEB-INF\classes\BaseDatos.java:60: cannot find symbol symbol : class BasicDataSource location: class clinica.BaseDatos BasicDataSource basicDataSource = new BasicDataSource(); ^ 3 errors
// Opcional. Sentencia SQL que le puede servir a BasicDataSource // para comprobar que la conexion es correcta. //basicDataSource.setValidationQuery("select 1");
dataSource = basicDataSource; }
/** * Realiza una insercion, pidiendo una conexion al dataSource y cerrandola * inmediatamente despues, para liberarla. */ private void insertar(String inser) { Connection conexion = null; try { // BasicDataSource nos reserva una conexion y nos la devuelve. conexion = dataSource.getConnection();
// La insercion. Statement ps = conexion.createStatement(); ps.executeUpdate(inser);
/** * Cierra la conexion. Al provenir de BasicDataSource, en realidad no se * esta cerrando. La llamada a close() le indica al BasicDataSource que * hemos terminado con dicha conexion y que puede asignarsela a otro que la * pida. * * @param conexion */ private void liberaConexion(Connection conexion) { try { if (null != conexion) { // En realidad no cierra, solo libera la conexion. conexion.close(); } } catch (SQLException e) { e.printStackTrace(); } }
/** * Realiza una consulta a la base de datos y muestra los resultados en * pantalla. */ private void consultar(String consu) { Connection conexion = null; try { conexion = dataSource.getConnection(); Statement sentencia = conexion.createStatement(); ResultSet rs = sentencia.executeQuery(consu);
} catch (SQLException e) { e.printStackTrace(); } finally { // En el finally, para asegurar que se ejecuta, se cierra la // conexion. liberaConexion(conexion); } } }
Buenas,
Tengo mi clase BaseDatos.java en donde implemento conexión pool con el dbcp, en la carpeta lib de tomcat 6 copié los .jar: commons-dbcp y commons-pool, modifique el web.xml de mi carpeta de aplicación y el context.xml, incluso lo copie en el lib de jdk 1.6, pero al compilar la clase con el jcreator, me sale el siguiente error:
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\prueba\WEB-INF\classes\BaseDatos.java:10: package org.apache.commons.dbcp does not exist
import org.apache.commons.dbcp.BasicDataSource;
^
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\prueba\WEB-INF\classes\BaseDatos.java:60: cannot find symbol
symbol : class BasicDataSource
location: class clinica.BaseDatos
BasicDataSource basicDataSource = new BasicDataSource();
^
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\prueba\WEB-INF\classes\BaseDatos.java:60: cannot find symbol
symbol : class BasicDataSource
location: class clinica.BaseDatos
BasicDataSource basicDataSource = new BasicDataSource();
^
3 errors
Esta es la clase:
package prueba;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import javax.sql.CommonDataSource.*;
import java.lang.Object.*;
import org.apache.commons.dbcp.BasicDataSource;
import javax.naming.InitialContext;
/**
* Ejemplo simple de uso de BasicDataSource.
*
* @author Chuidiang
*/
public class BaseDatos {
/**
* @param args
*/
public static void main(String[] args) {
new BaseDatos();
}
/** Pool de conexiones */
private DataSource dataSource;
/**
* Inicializa el pool de conexiones BasicDataSource y realiza una insercion
* y una consulta
*/
public BaseDatos() {
InitialContext cxt = new InitialContext();
if ( cxt == null ) {
throw new Exception("Uh oh -- no context!");
}
DataSource ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/postgres" );
if ( ds == null ) {
throw new Exception("Data source not found!");
}
inicializaDataSource();
}
/**
* Inicializacion de BasicDataSource
*/
private void inicializaDataSource() {
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("org.postgresql.Driver");
basicDataSource.setUsername("postgres");
basicDataSource.setPassword("54");
basicDataSource.setUrl("jdbc:postgresql://localhost:5432/prueba");
// Opcional. Sentencia SQL que le puede servir a BasicDataSource
// para comprobar que la conexion es correcta.
//basicDataSource.setValidationQuery("select 1");
dataSource = basicDataSource;
}
/**
* Realiza una insercion, pidiendo una conexion al dataSource y cerrandola
* inmediatamente despues, para liberarla.
*/
private void insertar(String inser) {
Connection conexion = null;
try {
// BasicDataSource nos reserva una conexion y nos la devuelve.
conexion = dataSource.getConnection();
// La insercion.
Statement ps = conexion.createStatement();
ps.executeUpdate(inser);
} catch (SQLException e) {
e.printStackTrace();
} finally {
liberaConexion(conexion);
}
}
/**
* Cierra la conexion. Al provenir de BasicDataSource, en realidad no se
* esta cerrando. La llamada a close() le indica al BasicDataSource que
* hemos terminado con dicha conexion y que puede asignarsela a otro que la
* pida.
*
* @param conexion
*/
private void liberaConexion(Connection conexion) {
try {
if (null != conexion) {
// En realidad no cierra, solo libera la conexion.
conexion.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* Realiza una consulta a la base de datos y muestra los resultados en
* pantalla.
*/
private void consultar(String consu) {
Connection conexion = null;
try {
conexion = dataSource.getConnection();
Statement sentencia = conexion.createStatement();
ResultSet rs = sentencia.executeQuery(consu);
} catch (SQLException e) {
e.printStackTrace();
} finally {
// En el finally, para asegurar que se ejecuta, se cierra la
// conexion.
liberaConexion(conexion);
}
}
}
Les agradezco me ayuden! :(