Estas en:

Catálogo de servicios
Autentia (PDF 6,2MB)

tríptico de Autentia
En formato comic...

Acceso de usuarios registrados:

Deseo registrarme

He olvidado mis datos de acceso

Registra tu empresa:

Descubre las ventajas de registrar tu empresa en AdictosAlTrabajo...

Registrar mi empresa

Listado de empresas ya registradas

Google

Últimos tutoriales

+Noticias Destacadas

+Comentarios Cómic

  2009-08-28 - 11:17:42 AM
   rcanales escribío:
    Completamente de acuerdo contigo. Yo no se quien hace las cuentas en tu empresa [...]
  2009-08-28 - 07:01:44 AM
   Anonimo escribío:
    pues yo tengo el cuello rigido como una piedra porque el aire acondicionado esta [...]
  2009-07-23 - 10:32:12 PM
   Jaime escribío:
    definitivamente la parte mas divertida es la de programar, y la explotacion lo v [...]
  2009-05-13 - 11:26:33 PM
   williarim escribío:
    Quiero felicitar al autor de estas historietas! Gracias por compartir con todos [...]
  2009-05-13 - 04:40:59 PM
   rcanales escribío:
    Hola Brunoise: Todo tiene perspectiva. El función de tus forma de ser y ver e [...]

+Enlaces


Tutorial desarrollado por

Roberto Canales Mora

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Ingeniero Técnico de Telecomunicaciones y Executive MBA por el Instituto de Empresa 2007. Perfíl Technorati

Experto en formación en: Dirección de proyectos informáticos, análisis y diseño UML, arquitectura Web, patrones de diseño y JEE a todos los niveles.

Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí

Catálogo de servicios de Autentia

Descargar (6,2 MB)

Descargar en versión comic (17 MB)

AdictosAlTrabajo.com es el Web de difusión de conocimiento de Autentia.

Catálogo de cursos

Fecha de creación del tutorial: 2003-12-27

New Page 1

Pool de Conexiones en Struts

Cuando construimos un Web en Java y tenemos el hosting en instalaciones compartidas (como nuestro caso que lo tenemos en www.enredados.com), es muy probable que queramos tener el menor número de dependencias con el personal administrativo de estos sistemas.....

Para constituir un pool de conexiones en Tomcat, hace falta tocar el fichero server.xml ... al cuan es posible que no tengáis acceso....

Una solución para trabajar del modo más autónomo posible consiste en utilizar vuestro propio pool de conexiones.

En el casos de Struts, éste nos proporciona el soporte para poder gestionar el Pool a través del fichero struts-config.xml.

Nota: Si veis que hacemos muchas referencias a struts, no es porque sea la panacea universal. Creo que es un buen punto de comienzo para la creación de un framework empresarial pero encontrareis algunos puntos a mejorar y, además, creo que la evolución de la tecnología de PORTALES (ya os hablaremos sobre esto... tengo un tutorial en el horno), constituirá la verdadera referencia de desarrollo Web en unos meses/años.

Vamos a ir al Web de referencia y seguir las instrucciones pero ........ se les ha olvidado algunos detalles que os comentamos aquí...

Lo primero, introducir en las primeras líneas del struts-config.xml, la referencia al pool (para saber donde meterlo mirar la DTD del XML)

<data-sources>
  <data-source type="org.apache.commons.dbcp.BasicDataSource">
     <set-property property="driverClassName" value="com.mysql.jdbc.Driver" />
     <set-property property="url" value="jdbc:mysql://localhost/tutoriales" />
     <set-property property="username" value="root" />
     <set-property property="password" value="" />
     <set-property property="maxActive" value="10" />
     <set-property property="maxWait" value="5000" />
     <set-property property="defaultAutoCommit" value="false" />
     <set-property property="defaultReadOnly" value="false" />
     <set-property property="validationQuery" value="SELECT COUNT(*) FROM tutoriales" />
  </data-source>
</data-sources>
 

Para que funcione correctamente, hay que descargarse unos ficheros de soporte (esto es lo que no esta demasiado completo)

Estar seguros de tener estos ficheros en vuestro directorio lib

El único con un poco de trampa es en struts-legacy.jar, que podéis encontrar en:

http://apache.tsuren.net/dist/jakarta/struts/struts-legacy/

Creamos una acción de prueba

package appbasica;

import org.apache.struts.action.*;
import java.sql.*;
import javax.sql.*;

/**
 * @author Roberto Canales rcanales@adictosaltrabajo.com
 */
public class poolAction extends Action {
    
    /** Creates a new instance of LoginAction */
    public poolAction() {
    }
    
    public org.apache.struts.action.ActionForward execute(
          org.apache.struts.action.ActionMapping actionMapping, 
          org.apache.struts.action.ActionForm actionForm, 
          javax.servlet.http.HttpServletRequest httpServletRequest, 
          javax.servlet.http.HttpServletResponse httpServletResponse) throws java.lang.Exception {
        
        java.util.Vector noticias = Noticia.getNoticiasPrueba();
        httpServletRequest.setAttribute("noticias",  noticias);
        
        
        java.sql.Connection con = null;
        
        String resultado = "";
        
        
        try {
            javax.sql.DataSource dataSource = getDataSource(httpServletRequest);
            con = dataSource.getConnection();
            PreparedStatement pstmt = con.prepareStatement("SELECT * FROM tutoriales WHERE id < ?");
            pstmt.setInt(1,10); // establecemos el entero
            ResultSet results = pstmt.executeQuery();
            
            
            while (results.next()) {
                String id = results.getString(1);
                String titulo = results.getString(2);
                resultado = resultado + "El titulo es " + titulo + " para id " + id + "";
            }
            
            httpServletRequest.setAttribute("listado",  resultado);
            
            
        } catch (java.sql.SQLException sqle) { getServlet().log("Connection.process", sqle); } 
           finally {
            try {
                con.close();
            } catch (java.sql.SQLException e) {
                getServlet().log("Connection.close", e);
            }
        }
        
        ActionForward retValue = actionMapping.findForward("respool");
        return retValue;
    }
    
}

      

Y un JSP (que incluye las cabeceras y pies)

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<html>
<head>
<title>Muestra de uso de Pools de conexiones en Struts</title>
</head>
<body>
<center>

<bean:include id="cabecera" page="cabecera.jsp"/>
<bean:write name="cabecera" filter="false"/>


<h2>La informacion recuperada de la bbdds es:</h2>
<hr width="60%">
<bean:write name="listado" filter="false"/>


<bean:include id="pie" page="pie.jsp"/>
<bean:write name="pie" filter="false"/>


</center>
</html>

Introducimos la entrada en el fichero de configuración struts-config.xml

<action path="/pool" parameter="accion" type="appbasica.poolAction" name="emptyForm" validate="false">
      <forward name="respool" path="/pages/respool.jsp" redirect="false"/>
</action>
 

Si vemos la base de datos

Y ya estamos funcionando

Pues si que es fácil verdad.... jejeje ... aunque todo es fácil  hasta que te pones a hacerlo y te tiras dos mañanas porque a alguien se le olvido algún detalle en la documentación ;-).

Bueno, al final no voy a tener excusa para no pasar el Web www.adictosaltrabajo.com a Java (ahora está en PHP).......

Feliz Navidad

 

¿Qué te ha parecido el tutorial? Déjanos saber tu opinión y ¡vota!

Muy malo Malo Regular Bueno Muy bueno
 


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Anímate y coméntanos lo que pienses sobre este tutorial

Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Autor Mensaje de usuario registrado
Autor Mensaje de usuario anónimo
luis Fecha de envío: 2006-09-10 - 08:29:00 AM
hola, me parece muy bueno pero que pasa si nececito conectarme a mas de 1 base de datos? y que pasa con MVC, no se supondria que el acceso y ejecucion de los sql corre a cargo de los DAO? Saludos
luis Fecha de envío: 2006-09-09 - 06:18:57 AM
hola, tengo una duda, al poner la conexion en el action no se esta rompiendo con el patron MVC en donde el DAO es el encargado de llamar a otra clase que se de la conexion y despues el dao ejecutar el query?


Creative Commons License Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5

Recuerda

Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseño ... y muchas otras cosas.

¿Nos vas a tener en cuenta cuando necesites consultoría o formación en tu empresa?, ¿Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?

Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...

Autentia = Soporte a Desarrollo & Formación.

info@autentia.com

Tutoriales recomendados

Nombre Resumen
Fecha
Visitas Valoración Votos Pdf
Creación de servicios web RestFul, con soporte a persistencia, en NetBeans. En este tutorial vamos a analizar el soporte que nos proporciona NetBeans para la creación de servicios web RESTful, que den soporte a las operaciones típicas que se pueden realizar contra una tabla de base de datos.El objetivo es la creación de un proyec 2010-01-12 708 Muy bueno 1
MySQL: Replicación de bases de datos en MySQL En este tutorial aprederemos a replicar bases de datos MySQL 2009-12-08 1811 Muy bueno 1
iReport : Solución al problema de los parámetros dinámicos. En este tutorial acerca de iReport, tratamos la solución al problema de los parámetros dinámicos e introducción a los ficheros "jrxml" 2009-09-28 2939 - -
Ordenación por cantidades en informe cruzado Nico nos explica en ese tutorial cómo lograr ordenar por cantidades en informes cruzados usando JasperReports e iReport 2009-08-26 2100 - -
Joomla 1.5. Instalación y configuración Veamos en detalle cómo instalar Joomla 1.5 y aplicar algunas configuraciones posteriores de las disponibles en este CMS 2009-08-14 9256 - -
Hibernate Search, Bridges, Analizadores y más Detalles del uso de Hibernate Search con bases de datos Lucene 2009-07-29 2418 - -
DBUnit-Exportar e Importar BBDD DBUnit como complemento de los test unitarios con carga a una base de datos 2009-07-06 2717 - -
Informes Crosstab con iReport Con este tutorial vamos a ampliar el nivel de conocimiento sobre iReport enseñando como hacer un informe usando crosstab o tablas dinámicas 2009-04-16 7449 - -
Registro de Web Services con Apache jUDDI. Configuración y ejemplo Veamos como podemos catalogar y buscar web services bajo la especificación UDDI (Universal Description, Discovery and Integration) 2009-04-13 4771 - -
Persistencia con Spring En el siquiente tutorial vamos a ver algunas de las aportaciones que nos ofrece Spring para mejorar la capa de persistencia de nuestras aplicaciones 2009-03-04 4977 Bueno 1

Nota:

Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento. Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores. En algún caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tiene más que solicitarlo. Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolución.