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.
- hackchan's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
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
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
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 ?
String message = null;
try {
while ((message = entrada.readLine()) != null)
{
StandardUserServiceClient client = new StandardUserServiceClient();
client.fetchUsers();
}
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.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;
}
}
public interface UserService {
Iterator<String> getUsers();
}
Archivo de configuracion
<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>
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();
}
}