Lo cierto del caso es que es cierto, hice las pruebas y salieron mal... pero mira lo que hice mezclando mi codigo con el de la pagina que me diste:
Este es el pool:
Código PHP:
package XAlX;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public final class poolBaseDatos
{
int codError = 0;
String mensajeError = "";
Statement st=null;
Connection connection = null;
public poolBaseDatos()
{
try{
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("base_datos");
DataSource ds = (DataSource)envContext.lookup("base_datos");
synchronized (ds)
{
connection = ds.getConnection(); // cogemos la conexion
}
//connection.setAutoCommit(false);
}catch(Exception e) {
System.out.println("Catch del conector a la bd");
System.out.println(e.getMessage());
}
}
public boolean doCommit()
{
// clearError();
try
{
connection.commit();
st.close();
System.out.println("connection commit");
}
catch(Exception e)
{
// Log.error(e);
System.out.println("Catch del docommit");
mensajeError = e.toString();
codError = 1;
return false;
}
return true;
}
public boolean doRollback()
{
// clearError();
try
{
st.close();
connection.rollback();
connection.close();
System.out.println("conecction roll back");
}
catch(Exception e)
{
// Log.error(e);
System.out.println("Catch del dorollback");
System.out.println(e.getMessage());
codError = 1;
return false;
}
return true;
}
public ResultSet doSelect(String sql)
{
ResultSet rs=null;
// clearError();
try
{
st = connection.createStatement();
rs = st.executeQuery(sql);
System.out.println("Creando la conexion");
}
catch(Exception e)
{
System.out.println("Catch del doselect en el pool...");
System.out.println(e.getMessage());
codError = 1;
}
return rs;
}
}
Desde los servlets de la aplicacion llamo a este pool a hacer operaciones basicas de esta forma:
Código PHP:
conn = new poolBaseDatos();
String valor;
int codigo, codpades;
try{
SQL="SELECT codigo from Pais WHERE descripcion='";
SQL+=xpais;
SQL+="'";
ResultSet rs1;
rs1 = conn.doSelect(SQL);
if (rs1.next()){
codpades = (rs1.getInt("codigopais"));
do{
SQL = "SELECT ";
SQL+=column1;
SQL+=",";
SQL+=column2;
SQL+=" FROM ";
SQL+=table;
SQL+=" WHERE CodPais='";
SQL+=codpades;
SQL+="'";
SQL+=" ORDER By ";
SQL+=column2;
ResultSet rs;
rs = conn.doSelect(SQL);
if (rs.next()){
combo = "";
do{
codigo = (rs.getInt(column1));
valor = (rs.getString(column2));
combo += "<option> ";
combo += valor;
combo += "</option>\n";
}while(rs.next());
}
}while(rs1.next());
}
conn.doRollback();
return 0;
}catch (Exception e){
System.out.println("Se produjo un error creando la sentencia SQL del Combo");
System.out.println(e.getMessage());
return -2;
}
En el ficher server XML coloque esto :
Código PHP:
<Context path="/poolBaseDatos" docBase="poolBaseDatos"
debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="Base_Datos"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="Base_Datos">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>sun.jdbc.odbc.JdbcOdbcDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:odbc:Base_Datos</value>
</parameter>
<parameter>
<name>username</name>
<value>dba</value>
</parameter>
<parameter>
<name>password</name>
<value>sql</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
Y en el web xml del pool de conexiones, puse esto:
Código PHP:
<resource-ref>
<description>pool base datos test</description>
<res-ref-name>jdbc:odbc:ciis_libertador</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
pero al correr la aplicacion me manda un error que dice "Base_Datos no esta asociado a este contexto", esto sera porque???, la otra cosa es, que te parece este nuevo pool?, creo que ahora si deberia cumplir los requisitos pero quiero saber porque ese error de contexto.
COMO SIEMPRE ESPERANDO TU OPINION...
MUCHISIMAS GRACIAS!!!!!