DUDA BONECP

con bonecp tengo que crear el getConnection de mi dataSource como syncronizado ya que esta consulta a la base de datos son muchos clintes unos haciendo consultas otros insertando otros actualizando en fin o bonecp maneja todo esto de forma trasparente.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

no

No tienes que crear nada, usa el dataSource de BoneCP como cualquier otro, internamente ya está resuelto todo eso en BoneCP y lo maneja de forma transparente.

ok

solo es manejar el
BoneCPDataSource() veo que hay un BoneCPDataSource(BoneCPConfig config) me imagino que ahi donde le paso los datos de miconexion actualmente manejo dos instacias hay alguna configuracion extra que hacer???

inyeccion

hola ezamudio en otro post me comentaste algo de inyeccion de dependencia y al leer veo que se intancia una sola vez yy se pasa o se obtiene por getter la instancia para su uso. pero intentando con spring me genera errores me prodria dar un ejemplo de como lograr

Imagen de ezamudio

google

en el sitio de bonecp hay ejemplos de uso con spring

ok ezamudio

despues de googlear un poco sobre spring lo de inyection (uff!) y leei un poco sobre el jdbcTemplate son cosas que te acorta el desarrollo un monto despues de invertirle tiempo en configurar(errores de todos lados) pero en fin tratando de usar en mi socket java de una manera optima bonecp.

ya inyecto datasource de bonecp a mis daos ;) hay algunas cosas como cuando uso spring y miro la consola simpre me trae un peqeño log

dic 05, 2013 2:48:23 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
Información: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@f1916f: startup date [Thu Dec 05 14:48:23 COT 2013]; root of context hierarchy
dic 05, 2013 2:48:23 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
Información: Loading XML bean definitions from class path resource [resources/applicationContext.xml]
dic 05, 2013 2:48:23 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
Información: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@ee003d: defining beans [dataSource,userDao,userService]; root of factory hierarchy
<code>
es solo informativo por que todo lo hace ok Hay alguna manera de quitar esos mensajes en la consola???,

la pregunta del millon esto va estar en un socket java esta linea

<code>
StandardUserServiceClient client = new StandardUserServiceClient();
        client.fetchUsers();

iria dentro de ?

public void run(){
       
            String message = null;
            try {
                    while ((message = entrada.readLine()) != null)
                    {  
                       
                          StandardUserServiceClient client = new StandardUserServiceClient();
                          client.fetchUsers();

                     }
                   

dic 05, 2013 2:44:35 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
Información: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1e78c96: startup date [Thu Dec 05 14:44:35 COT 2013]; root of context hierarchy
dic 05, 2013 2:44:35 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
Información: Loading XML bean definitions from class path resource [resources/applicationContext.xml]
dic 05, 2013 2:44:35 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
Información: Pre-instantiating
<code>
voy asi:
<code>
     

import java.util.Iterator;

public interface UserDao {
   
 
   void setDataSource(DataSource ds);
    Iterator<String> getUsers();
    List<IPersonaDTO> getPersonas();

   
}

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

public class UserDaoImpl  implements UserDao {
private DataSource dataSource;

@Override
  public void setDataSource(DataSource ds) {
    dataSource = ds;
  }

    @Override
    public Iterator<String> getUsers() {
       
        List<String> users = new ArrayList<>();
        users.add("Gavin King");
        users.add("Geertjan");
        users.add("Mike Keith");
        users.add("James");
        return users.iterator();
    }

    @Override
    public List<IPersonaDTO> getPersonas() {
       
        List<IPersonaDTO> listaPersona = new ArrayList<>();
       
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
       
        try
        {
           conn = dataSource.getConnection();
           ps = conn.prepareStatement("SELECT * FROM siap.persona2");
           rs = ps.executeQuery();
           IPersonaDTO persona;
           while(rs.next())
           {
              persona = new PersonaDTO(rs.getString("nombre1"));
              listaPersona.add(persona);
           }
           
           
           
       
        }
        catch(SQLException ex)
        {
            System.out.println("problemas erro:"+ex.getMessage());
        }
        finally{
            try {
                if(rs!=null) rs.close();
               
                if(ps!=null) ps.close();
                if(conn!=null) conn.close();
            } catch (SQLException ex) {
                Logger.getLogger(UserDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
       
        }
        return listaPersona;
       
    }
   
}

import java.util.Iterator;

public interface UserService {
   
    Iterator<String> getUsers();
   
}

Archivo de configuracion

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans <a href="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
" title="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
">http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
</a>
 
   
 <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"  destroy-method="close">
   
   <property name="driverClass" value="oracle.jdbc.OracleDriver" />
   <property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.18.9:1521:siap" />
   <property name="username" value="siap"/>
   <property name="password" value="ac75siap"/>
   <property name="IdleConnectionTestPeriodInMinutes" value="60"/>
   <property name="IdleMaxAgeInMinutes" value="240"/>
   <property name="maxConnectionsPerPartition" value="30"/>
   <property name="minConnectionsPerPartition" value="10"/>
   <property name="partitionCount" value="3"/>
   <property name="acquireIncrement" value="5"/>
   <property name="statementsCacheSize" value="100"/>
   
    </bean>  
   
 <bean id="userDao" class="com.ac75.app.dao.UserDaoImpl">
     <property name="dataSource" ref="dataSource" />
 </bean>
 
 <bean id="userService" class="com.ac75.app.service.UserServiceImpl">
     <property name="userDao" ref="userDao"/>
 </bean>
</beans>
public class SpringUserServiceClient {
   
    private UserService userService;
 
    public SpringUserServiceClient()
    {
        //initialize the spring container
        ApplicationContext context = new ClassPathXmlApplicationContext("resources/applicationContext.xml");
        userService = (UserService) context.getBean("userService");
    }
 
    private void fetchUsers()
    {
        Iterator<String> users = userService.getUsers();
        while(users.hasNext())
        {
            System.out.println(users.next());
        }
    }
 
    public static void main(String[] args)
    {
        SpringUserServiceClient client = new SpringUserServiceClient();
        client.fetchUsers();
    }
   
}