Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con context y tomcat 5.0

Estas en el tema de Problema con context y tomcat 5.0 en el foro de Java en Foros del Web. Hola a todos... Tengo un problema enorme con estos codigos, como veran es un supuesto pool de conexiones. El primer codigo es el que conecta ...
  #1 (permalink)  
Antiguo 21/11/2003, 09:35
Avatar de alexbariv  
Fecha de Ingreso: septiembre-2003
Ubicación: Mérida, Venezuela
Mensajes: 766
Antigüedad: 21 años, 3 meses
Puntos: 0
Problema con context y tomcat 5.0

Hola a todos...

Tengo un problema enorme con estos codigos, como veran es un supuesto pool de conexiones. El primer codigo es el que conecta la base de datos y el que tiene los contexts en su webxml, porque la clase poolBaseDatos esta en una carpeta diferente a la carpeta donde estan los servlets..., cada servlet llama al pool para hacer su conexion a la bd.

Lo cierto del caso es que cuando se tiene que conectar dice "Base_Datos no esta asociado a este contexto"

porque sera esto?

aqui tienen todo el codigo, primero el pool y despues los demas, mirenlos y diganme que les parece.:


DICE PHP PORQUE UTILICE ESA ETIQUETA PARA HACER QUE SALGA EL CODIGO CON COLORES Y ORDENADO, PERO ESTO ES JAVA


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???,


MUCHISIMAS GRACIAS!!!!!
__________________
"Piensa como una persona de acción y actúa como una persona que piensa."
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:26.