Resultados 1 al 4 de 4

Conexión directa vs pool

  1. #1 Conexión directa vs pool 
    Iniciado
    Fecha de ingreso
    Sep 2012
    Mensajes
    9
    Descargas
    0
    Uploads
    0
    Hola antes de nada, salud para todos. Escribo esto porque tengo entendido que para establecer una conexión a una base de datos, existen dos modos:

    1º Conexión directa.
    2º Conexión por pool de conexiones.

    Quisiera saber la diferencia entre ambas, y cómo se implementan cada una de ellas en una aplicación... sobre todo de la 2ª. El lenguaje de programación si puede ser en Java mejor, pues estoy haciendo algo en WebLogic y toda la información que se me proporcione será más que bienvenida.

    Gracias de antemano.
    Citar  
     

  2. #2  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Buenas y bienvenido! La diferencia entre ambas es que en la conexión directa utilizas un driver que te facilita el fabricante del motor de la base de datos para establecer la conexión, y en el pool de conexiones empleas un DataSource.

    Ambas deben llamar en Java a getConnection(). Pero una lo hace desde el driver y la otra desde el DataSource.

    En la conexión directa, a través del driver, tu debes encargarte de abrir y cerrar las conexiones, mientras que en el pool, hay un conjunto de conexiones disponibles que se van reutilizando a medida que las transacciones terminan. Normalmente es el servidor quien establece y define ese pool de conexiones abiertas. La aplicación solicita establecer una conexión con la base de datos, y se la pide a éste para que se la asigne.

    A modo de ejemplo, si tienes un servidor mysql, la forma de implementar ambos métodos en java sería algo así:

    1º Conexion directa:
    Código:
    private static Connection getConexionDirecta() throws Excepcion {
    	Connection con = null;
    	String conector = "com.mysql.jdbc.Driver";
    
            String servidor = "servidorBD";
            String puerto = "3306";
            String usuario = "user";
            String password = "pass";
            String bd = "esquema_basedatos";
    
            String cadenaConexion = "jdbc://mysql://"+servidorBD+":"+puerto+"/"+bd;
    
    	try {
    		Class.forName(conector);
    		con = java.sql.DriverManager.getConnection(cadenaConexion, usuario, password);
    	} catch (final SQLException e) {
    		throw new Excepcion("Error conexion", e);
    	} catch (final ClassNotFoundException e) {
    		throw new Excepcion("Error conexion", e);
    	}
    	return con;
    }

    2º Conexion por pool:
    Código:
    private static Connection getConexionPool() throws Excepcion {
    	Connection con = null;
            String jndi = "miJNDI";
    
    	try {
                    Context initContext = new InitialContext();
                    DataSource ds = (DataSource) initContext.lookup(jndi);
                    con = ds.getConnection();
    	} catch (final NamingException e) {
    		throw new Excepcion("Error configuracion DataSource", e);
    	} catch (final SQLException e) {
    		throw new Excepcion("Error conexion", e);
    	}
    	return con;
    }

    Observa que en la conexión por pool, no necesitas saber ningún parámetro de conexión (cadena conexión, usuario, clave, etc...) con la base de datos, tal y como se hace en la conexión directa. En su lugar, lo que se pasa es el JNDI (Java Naming and Directory Interface), que es una cadena que identifica el pool a utilizar. Dicho pool, debe ser configurado en el servidor de la aplicación.

    En tu caso, dices que estás utilizando WebLogic, asi que para configurar un nuevo DataSource, lo que necesitas es crearte o definirte un nuevo "orígen de datos". Esto lo puedes hacer de dos formas, bien a través de la consola que te ofrece WebLogic:

    Código:
    http://localhost:7001/console
    , suponiendo claro está que el servidor esté en "localhost".

    O bien, a través del fichero de configuración config.xml.

    Un saludo.
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

  3. #3  
    Iniciado
    Fecha de ingreso
    Sep 2012
    Mensajes
    9
    Descargas
    0
    Uploads
    0
    Muchas gracias hystd te agradezco la ayuda.

    Ahora lo entiendo, lo que no me queda claro es en la conexión por pool, en dónde especifico el JNDI="miJNDI", ya que parece que el JNDI está sustituyendo a todos los parámetros de conexión a la base de datos.

    Muchas gracias de nuevo.
    Citar  
     

  4. #4  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Esa pregunta indica que no te ha quedado muy claro

    A ver, el JNDI lo configuras en el servidor. En el caso de WebLogic, tienes la opción de hacerlo mediante el fichero config.xml, o bien a través de la consola, a la cual puedes acceder a través de la URL: http://localhost:7001/console. (Doy por supuesto que el servior WebLogic ya está corriendo... Si no lo estuviera, debes inciarlo mediante el script correspondiente: startWebLogic.sh en el caso de Linux o startWebLogic.bat en el caso de Windows. Y también doy por supuesto que weblogic lo estás lanzando desde tu equipo, de lo contrario ya no es localhost, sino la IP o el HOST que corresponda).

    En la consola de WebLogic hay una opción que es "Orígenes de Datos". Indicas los parámetros de conexión: tipo de base de datos (Oracle, MySQL, etc...), servidor, puerto, usuario y contraseña. Una vez configurado, deberás asignar un nombre a esa configuración. Ese nombre es lo que se denomina JNDI, y será el que utilices desde tu código Java.

    Un saludo.
    Última edición por hystd; 29-09-2012 a las 15:14
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

Temas similares

  1. Pool de conexiones Hibernate
    Por luis9rs en el foro PROGRAMACION WEB
    Respuestas: 0
    Último mensaje: 04-03-2010, 22:23
  2. Descarga directa de MP3
    Por Lagarto #2 en el foro OFF-TOPIC
    Respuestas: 2
    Último mensaje: 16-10-2006, 07:05
  3. Descarga directa
    Por Nero Angelo en el foro REDES Y TECNOLOGIAS WIRELESS
    Respuestas: 1
    Último mensaje: 14-09-2005, 12:03
  4. red conexion directa
    Por elgranpichu en el foro HARDWARE
    Respuestas: 9
    Último mensaje: 10-01-2004, 19:11
  5. Conexion directa por cable paralelo
    Por juan_kily en el foro HARDWARE
    Respuestas: 4
    Último mensaje: 21-08-2003, 00:40

Etiquetas para este tema

Marcadores

Marcadores