Weblogs Código

RecorteX

» tomcat
73 usuarios y 243 recortes de código
Usuario

Contraseña
Crear cuenta
Estás viendo los recortes de la etiqueta tomcat

RSS
Recortes: 2

Etiquetas relacionadas:
java
base-datos
planificador
tarea

Ejecutar un proceso cada cierto tiempo en un contenedor de servlets (tomcat)

Se implementa como un Listener de aplicación:
 
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import java.util.TimerTask;
import java.util.Timer;
 
public class Tarea extends TimerTask implements ServletContextListener {
    private Timer timer;
 
    public void contextInitialized(ServletContextEvent evt) {
        // Iniciamos el timer
        timer = new Timer();
        timer.schedule(this, 0, 10*60*1000);  // Ejemplo: Cada 10 minutos
    }
 
    public void contextDestroyed(ServletContextEvent evt) {
        timer.cancel();
    }
    
    public void run() {
        // Aquí el código a ejecutar cada cierto tiempo
    }    
}
 
Finalmente hay que añadir el listener al fichero web.xml de la aplicación. Ejemplo:
 
<web-app>
  <listener>
    <listener-class>Tarea</listener-class>
  </listener>
</web-app>
 

Obtener un DataSource de Tomcat

 
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/DB");
 
Luego hay que definir dicha base de datos DB en el contexto de la aplicación web. Ejemplo:
 
<Context path="/aplicacion" docBase="aplicacion">
    <Resource name="jdbc/DB" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/DB">
        <parameter>
            <name>factory</name>
            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
	</parameter>
	<parameter>
            <name>driverClassName</name>
            <value>com.mysql.jdbc.Driver</value>
	</parameter>
	<parameter>
            <name>url</name>
            <value>jdbc:mysql://host/database?autoReconnect=true</value>
	</parameter>
	<parameter>
            <name>username</name>
            <value>usuario</value>
	</parameter>
	<parameter>
            <name>password</name>
            <value>clave</value>
	</parameter>
	<parameter>
            <name>maxActive</name>
            <value>30</value>
	</parameter>
	<parameter>
            <name>maxIdle</name>
            <value>10</value>
	</parameter>
	<parameter>
            <name>maxWait</name>
            <value>10000</value>
	</parameter>
        <parameter>
            <name>removeAbandoned</name>
            <value>true</value>
        </parameter>
        <parameter>
            <name>logAbandoned</name>
            <value>true</value>
        </parameter>                        
    </ResourceParams>
</Context>
 
Proyecto: Juanjo Navarro, 2006 - Diseño: Albin