Ver Mensaje Individual
  #17 (permalink)  
Antiguo 20/11/2003, 09:58
Avatar de alexbariv
alexbariv
 
Fecha de Ingreso: septiembre-2003
Ubicación: Mérida, Venezuela
Mensajes: 766
Antigüedad: 21 años, 6 meses
Puntos: 0
Mi amigo greeneyed!

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 codigocodpades;

        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!!!!!
__________________
"Piensa como una persona de acción y actúa como una persona que piensa."