Que tal tengo un problema con en una aplicacion que estoy realizando. Por algun motivo que no logro entender la aplicacion crea mas de una conexion contra la base de datos. mi archivo de Spring es el siguiente (trate de dejarlo lo mas limpio posible):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverM anagerDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost/plantaadsl</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>mariano</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSes sionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>hibernate/Comando.hbm.xml </value>
<value>hibernate/UserTelnet.hbm.xml</value>
<value>hibernate/Dslam.hbm.xml</value>
<value>hibernate/Log.hbm.xml</value>
<value>hibernate/Proveedor.hbm.xml</value>
<value>hibernate/Tecnologia.hbm.xml</value>
<value>hibernate/TipoComando.hbm.xml</value>
<value>hibernate/Vlan.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<ref local="hibernateProperties" />
</property>
</bean>
<bean id="hibernateProperties" class="org.springframework.beans.factory.config.Pr opertiesFactoryBean" singleton="true">
<property name="properties">
<props>
<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.connection.url">jdbc:mysql://localhost/plantaadsl</prop>
<prop key="hibernate.connection.username">plantaadsl</prop>
<prop key="hibernate.connection.password">mariano</prop>
<prop key="hibernate.connection.driver_class">org.gjt.mm .mysql.Driver</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQ LInnoDBDialect</prop>
<prop key="current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.connection.poolSize">1</prop>
<prop key="hibernate.connection.pool">1</prop>
</props>
</property>
</bean>
<bean id="hibernateDao" class="ar.com.rpadsl.persistencia.hibernate.Hibern ateDAO" singleton="true">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
</beans>
La clase java que llamo desde cualquier parte de mi aplicacion es para obtener un bean es
package ar.com.rpadsl.persistencia;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFacto ry;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class BeanProvider {
static Logger logger = Logger.getLogger(BeanProvider.class.getName());
private static BeanProvider instance;
private BeanFactory factory;
private BeanProvider(){
logger.info("Generando una instancia del BeanProvider");
Resource resource = new ClassPathResource("spring-config.xml");
factory = new XmlBeanFactory(resource);
}
private BeanProvider(BeanFactory myFactory) {
factory = myFactory;
}
public static BeanProvider getInstance() {
if (instance == null)
instance = new BeanProvider();
return instance;
}
public Object getBean(String beanName) {
Object object = factory.getBean(beanName);
logger.info("Obtenido el bean " + object.toString());
logger.debug("DEBUG");
if (object == null) {
logger.error("No se encontró el bean " + beanName
+ " dentro del archivo de configuración de beans");
throw new RuntimeException("No se encontró el bean " + beanName
+ " dentro del archivo de configuración de beans");
}
return object;
}
public static void setBeanFactory(BeanFactory myFactory) {
if (instance == null)
instance = new BeanProvider(myFactory);
else
instance.factory = myFactory;
}
}