problema con hilos dentro del tomcat
mi jproblema estriba que tengo un hilo que limpia de un pool de conexiones, las conexiones que estan superan un tiempo predeterminado.
pero el hilo sin indicarle la sentencia start(); se pone a funcionar con simplemente crear el objeto hilo.
el hilo es creado dentro de un ServletContextListener.
Alguien tiene algun tipo de explicaci贸n? gracias
pero el hilo sin indicarle la sentencia start(); se pone a funcionar con simplemente crear el objeto hilo.
el hilo es creado dentro de un ServletContextListener.
Alguien tiene algun tipo de explicaci贸n? gracias
El tomcat tiene su propio pool de conexiones no tienens que programar nada amigo. Solo configurarlo y utilizarlo.
en la carpeta de conf/Catalina/localhost estan los xml de configuraci贸n modifica tu xml de tu aplicacion similar a la siguiente:
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="C:/gabs" path="/gabs" reloadable="true" swallowOutput="true" workDir="workCatalinalocalhostgabs">
<Resource name="jdbc/Conecta" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/Conecta">
<parameter>
<name>maxWait</name>
<value>10000</value> //tiempo de espera
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value> //maximo numero de conexiones
</parameter>
<parameter>
<name>password</name>
<value>tu_password</value> // tu contrase帽a de la base
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@127.0.0.1:1565:base</value> // urlconection, esta es de oracle
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value> // class driver
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value> // numero maximo de conexiones sin hacer nada o en espera
</parameter>
<parameter>
<name>username</name>
<value>tu_nombre_de_usuario</value> // nombre de usuario
</parameter>
</ResourceParams>
</Context>
Con esto creas tu pool de conexiones manejado por tomcat, mas informaci贸n en la documentaci贸n de tomcat
y tu jsp puede ser como este:
<%@ page contentType="text/html; charset=iso-8859-1" language="java"
import ="java.sql.ResultSet"
import ="java.sql.Connection"
import ="java.sql.PreparedStatement"
import ="java.sql.SQLException"
import ="javax.naming.Context"
import ="javax.naming.InitialContext"
import ="javax.naming.Context"
import ="javax.sql.DataSource"
import ="javax.naming.NamingException"
errorPage="" %>
<html>
<head>
<title>Ejemplo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
Connection conn;
String cadSql = "Select sysdate from Dual";
// Trae una conexi贸n del pool de conexiones
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/Conecta");
conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(cadSql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
out.print(rs.getString(1));
}
rs.close();
pstmt.close();
conn.close();
%>
</body>
</html>
Suerte ...
: [
en la carpeta de conf/Catalina/localhost estan los xml de configuraci贸n modifica tu xml de tu aplicacion similar a la siguiente:
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="C:/gabs" path="/gabs" reloadable="true" swallowOutput="true" workDir="workCatalinalocalhostgabs">
<Resource name="jdbc/Conecta" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/Conecta">
<parameter>
<name>maxWait</name>
<value>10000</value> //tiempo de espera
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value> //maximo numero de conexiones
</parameter>
<parameter>
<name>password</name>
<value>tu_password</value> // tu contrase帽a de la base
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@127.0.0.1:1565:base</value> // urlconection, esta es de oracle
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value> // class driver
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value> // numero maximo de conexiones sin hacer nada o en espera
</parameter>
<parameter>
<name>username</name>
<value>tu_nombre_de_usuario</value> // nombre de usuario
</parameter>
</ResourceParams>
</Context>
Con esto creas tu pool de conexiones manejado por tomcat, mas informaci贸n en la documentaci贸n de tomcat
y tu jsp puede ser como este:
<%@ page contentType="text/html; charset=iso-8859-1" language="java"
import ="java.sql.ResultSet"
import ="java.sql.Connection"
import ="java.sql.PreparedStatement"
import ="java.sql.SQLException"
import ="javax.naming.Context"
import ="javax.naming.InitialContext"
import ="javax.naming.Context"
import ="javax.sql.DataSource"
import ="javax.naming.NamingException"
errorPage="" %>
<html>
<head>
<title>Ejemplo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
Connection conn;
String cadSql = "Select sysdate from Dual";
// Trae una conexi贸n del pool de conexiones
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/Conecta");
conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(cadSql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
out.print(rs.getString(1));
}
rs.close();
pstmt.close();
conn.close();
%>
</body>
</html>
Suerte ...
: [
