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

¿pool de conexiones tomcat?

Estas en el tema de ¿pool de conexiones tomcat? en el foro de Java en Foros del Web. Hola, estoy aprendiendo a realizar formularios (soy novato) utilizando Spring con Hibernate. El caso es que el formulario aparece y se procesa correctamente. Pero haciendo ...
  #1 (permalink)  
Antiguo 12/05/2014, 09:50
 
Fecha de Ingreso: mayo-2014
Ubicación: Jaén
Mensajes: 1
Antigüedad: 10 años
Puntos: 0
¿pool de conexiones tomcat?

Hola, estoy aprendiendo a realizar formularios (soy novato) utilizando Spring con Hibernate. El caso es que el formulario aparece y se procesa correctamente. Pero haciendo pruebas he detectado que al refrescar (ctrl+f5) muchas veces seguidas en url del formulario la BD parece que se satura. He buscado toda clase de información por si fuera del pool de conexiones, también he buscado por si fuera un problema de mysql. Pero no consigo saber el por que de dicho problema.

Pongo un ejemplo de lo que tengo por si alguien puede echarme una mano porque estoy ya muy bloqueado.

applicationContext
Código:
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost:3306/prueba?zeroDateTimeBehavior=convertToNull</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>contraseña</value>
        </property>
    </bean>
    
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref local="myDataSource" />
        </property>
        <!-- Must references all OR mapping files. -->
        <property name="mappingResources">
            <list>
                <value>Persona.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.connection.pool_size">1</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
                <prop key="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
                <prop key="hibernate.c3p0.acquire_increment">1</prop>
                <prop key="hibernate.c3p0.idle_test_period">100</prop>
                <prop key="hibernate.c3p0.max_size">5</prop>
                <prop key="hibernate.c3p0.max_statements">10</prop>
                <prop key="hibernate.c3p0.min_size">3</prop>
                <prop key="hibernate.c3p0.timeout">200</prop>
                <prop key="hibernate.c3p0.validate">SELECT 1</prop>
            </props>
        </property>
        
    </bean>
    
    <bean class="com.javierapps.controller.PersonaController" id="personaController">
        <property name="personaDaoImp" ref="personaDaoImp"></property>
    </bean>
    
    <bean class="com.javierapps.dao.impl.PersonaDaoImp" id="personaDaoImp">
        <property name="sessionFactory">
            <ref local="sessionFactory"/>
        </property>
    </bean>

En esta parte si elimino el acceso a la base de datos en el metodo referenceData el problema desaparece
PersonaController.java
Código:
public class PersonaController extends SimpleFormController {
    
    private PersonaDaoImp personaDaoImp;

    public void setPersonaDaoImp(PersonaDaoImp personaDaoImp) {
        this.personaDaoImp = personaDaoImp;
    }

    public PersonaController() {
        //Initialize controller properties here or 
        //in the Web Application Context

        setCommandClass(Persona.class);
        setCommandName("persona");
        setSuccessView("index");
        setFormView("nuevaPersona");
    }

//    @Override
//    protected void doSubmitAction(Object command) throws Exception {
//        throw new UnsupportedOperationException("Not yet implemented");
//    }
    //Use onSubmit instead of doSubmitAction 
    //when you need access to the Request, Response, or BindException objects
    @Override
    protected ModelAndView onSubmit(
            HttpServletRequest request,
            HttpServletResponse response,
            Object command,
            BindException errors) throws Exception {
        Persona p = (Persona) command;
        personaDaoImp.save(p);
        ModelAndView mv = new ModelAndView(getSuccessView());
        //Do something...
        return mv;
    }

    @Override
    protected Map referenceData(HttpServletRequest request) throws Exception {
        List<Persona> personas = personaDaoImp.getPersonas();
        List listaNombres = new ArrayList();
        for(int i=0;i<personas.size();i++){
            listaNombres.add(personas.get(i).getNombre());/*Si elimino este acceso a BD el problema desaparece*/
        }
        Map m = new HashMap<Object, Object>();
        m.put("listaNombres", listaNombres);
        return m;
    }

}
PersonaDaoImp.java
Código:
public class PersonaDaoImp extends HibernateDaoSupport implements PersonaDaoHibernate {

    @Override
    public void save(Persona persona) {
        this.getSession().save(persona);
    }

    @Override
    public List getPersonas() {
        Criteria c = getSession().createCriteria(Persona.class);
        return c.list();
    }
Espero vuestra ayuda, muchas gracias

Etiquetas: clase, conexiones, metodo
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 11:23.