Arquivos

Posts Tagged ‘Tomcat’

Quartz + Tomcat ou Qualquer Servidor de App

Este é um passo a passo de como criar uma aplicação Web que tem uma tarefa agendada. Por exemplo, vamos supor que você tem uma aplicação Web, que eventualmente deve efetuar uma limpeza de dados em uma base. Você pode utilizar o quartz para isso (outra alternativa seria Ejb timer). Vamos la:

1- Baixe o Quartz (http://www.quartz-scheduler.org/)
2- Crie um projeto Web Dinâmico no Eclipse e nas dependencias do mesmo, coloque todas as bibliotecas do Quartz baixadas no passo anterior.
3- Crie as classes abaixo:
3.1- Tarefa

package com.br.infoserver.quartz;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * Esta classe demonstra uma tarefa que ira ser invocada pelo Quartz
 * Tem que implementar a interface Job do Quartz
 * @author julianom
 */
public class TarefaExemplo implements Job{
	/**
	 * Metodo que é executado quando a tarefa é invocada
	 */
	public void execute(JobExecutionContext context)
	throws JobExecutionException {
		// aqui vai a lógica da tarefa a ser chamada,
		// por exemplo, fazer um select no banco e enviar algum dado para uma fila MQ
		// Neste exemplo, vai somente imprimir no console a data de hoje no intervalo de 5 segundos
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy – hh:mm:ss");
		System.err.println("Rodou: " + dateFormat.format( new Date() ));
	}
}

3.2- Agendador, esta classe será invocada por um servlet na inicialização da aplicação WEB

package com.br.infoserver.quartz;

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

/**
 * Esta é a classe que deve ser invocada e irá disparar a tarefa nos momentos
 * determinados
 *
 * @author julianom
 *
 */
public class Agendador {

	public static void inicia() throws Exception {
		// Detalhes da tarefa
		JobDetail job = JobBuilder.newJob(TarefaExemplo.class).withIdentity(
				"tarefaAloMundo", "group1").build();
		// Gatilho - ou seja, quando irá chamar, neste caso, a cada 5 segundos
		Trigger trigger = TriggerBuilder.newTrigger().withIdentity(
				"gatilhoAloMundo", "group1").withSchedule(
				CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();

		// Agenda e voa lá!
		Scheduler scheduler = new StdSchedulerFactory().getScheduler();
		scheduler.start();
		scheduler.scheduleJob(job, trigger);

	}

}

4- Crie um servlet, este Servlet deverá ser configurado para ser carregado na inicialização da aplicação, eu fiz isso utilizando annotation, dependendo de sua versão de Java, Apache, WebSphere, etc… vai ter que tirar do Servlet e colocar no arquivo web.xml

package com.br.infoserver.quartz.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.br.infoserver.quartz.Agendador;

/**
 * Servlet implementation class QuartzServlet
 */
@WebServlet(
		urlPatterns = { "/QuartzServlet" },
		initParams = {
				@WebInitParam(name = "load-on-startup", value = "2")
		})
public class QuartzServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public QuartzServlet() {
        super();
		try {
			Agendador.inicia();
		} catch (Exception e) {
			e.printStackTrace();
		}
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

Pronto, simples e fácil. Basta efetuar o deploy de sua aplicação em seu servidor, e verá que neste exemplo ele ficará escrevendo a data no SystemOut do mesmo!

Enjoy!

Fazendo Deploy no Tomcat pelo Hudson

setembro 7, 2011 2 comentários

Fazendo Deploy no Tomcat pelo Hudson!!!

Muito interessante e útil:

http://www.beilers.com/2009/09/continuous-deployment-with-hudson/

CategoriasJAVA Tags:, , ,

Executando comandos do Sistema Operacional em uma aplicação WEB Java

Criei uma aplicação muito simples que demonstra como um Servlet pode invocar uma classe que efetua um comando qualquer no sistema operacional.

O projeto foi testado em Linux, Unix e Solaris. Caso testem em Windows e puderem me dar um feedback, fico grato.

O mesmo foi criado no Eclipse e utiliza o Tomcat 6 como servidor de aplicação, foi utilizado o Java 6. Deve funcionar com outras versões.

A estrutura do projeto é:

onde:

  • DiskFree: classe java que executa o comando df no sistema operacional que está rodando o tomcat e retorna um BufferedReader.
  • ExecuteCommand: classe java que executa qualquer comando que for enviada para ela no host do tomcat.
  • ServletDF: É o servlet que invoca a classe DiskFree.
  • ServletExecuteCommand: É o servlet que invoca a classe Executar comando.
  • index.html: Página principal da aplicação que invoca os servlets e permite que o usuário entre com um comando a ser executado.

Vale lembrar que a aplicação tem finalidade didática, portanto, não foram observados padrões de projeto, boas práticas, etc.

Para baixar o projeto, eis o link:

Executando comandos do Sistema Operacional em uma aplicação WEB Java

Enjoy!

CategoriasJAVA Tags:, , ,

Baixando e instalando o Tomcat 5.5 no Ubuntu 8.04

Baixando e instalando o Tomcat 5.5 no Ubuntu 8.04Particularmente eu prefiro baixar e instalar manualmente o Tomcat do que utilizar algum gerenciados de pacotes tal como o apt-get. Manualmente, colocamos tudo referente a ele no mesmo local e fica mais fácil de gerenciar nosso ambiente de desenvolvimento.

O primeiro passo é obter o Tomcat, para isso vá para http://tomcat.apache.org/download-55.cgi e procure pelo item “Core”. Selecione o arquivo tar.gz para baixar. Quando concluído você terá obtido o arquivo apache-tomcat-5.5.26.tar.gz.

Como root, vá para /opt , cole o arquivo que você baixou lá e descompacte-o com o comando:

tar -xvzf apache-tomcat-5.5.26.tar.gz

Será criada uma pasta chamada apache-tomcat-5.5.26. Sugiro criar um link para a mesma, em /opt, chamada tomcat com o comando:

ln -s apache-tomcat-5.5.26 tomcat

Em /opt você irá ter:

drwxr-xr-x 11 root root    4096 2008-05-08 19:08 apache-tomcat-5.5.26
lrwxrwxrwx  1 root root      20 2008-05-08 19:08 tomcat -> apache-tomcat-5.5.26

O próximo passo é configurar as variáveis de ambiente CATALINA_HOME e JAVA_HOME. A Catalina deve apontar para o diretório de instalação do Tomcat, e o Java, para o diretório de instalação do JAVA. No meu caso, para testar posso fazer assim:

export CATALINA_HOME=/opt/tomcat
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

Ai vou até o diretório bin do Tomcat (cd /opt/tomcat/bin), e executo o startup.sh com o comando:

./startup.sh

O passo final é ir até o navegador e testar atravéz do link:

http://localhost:8080/

Você deverá ver uma página default do Tomcat.

Para não precisar setar as variáveis de ambiente sempre que for iniciar o Tomcat, você pode proceder de duas formas:
1- Adicionando os comandos de export no script startup.sh
2- Adicionando no arquivo /etc/profile do seu Ubuntu.

Enjoy!

CategoriasJAVA, Linux Tags:, , ,

Preparação de um ambiente de desenvolvimento JAVA

Preparação de um ambiente de desenvolvimento JAVAPreparei um guia para meus alunos no momento da preparação de seu ambiente de desenvolvimento JAVA em casa.

No mesmo, começo mostrando como baixar e configurar o JAVA SDK, depois mostro o download e configuração do Eclipse, do Banco de dados Postgres e do servidor de aplicações Tomcat, finalmente, configuramos o Tomcat no Eclipse e mostro o desenvolvimento de uma aplicação web dinâmica para testar o mesmo.

O mais legal de tudo é que o guia é multiplataforma, pode ser utilizado tanto para Windows quanto para Linux, embora eu admita que as instruções sobre o Linux estão bem resumidas.

O guia pode ser baixado aqui. Vale a pena dizer que seu nível é básico e não faz explicações sobre as ferramentas, Java, etc.

Em breve postarei o segundo capítulo, que vai mostrar como desenvolver utilizando servlets.

Bom proveito!

CategoriasJAVA Tags:, , , , , ,
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 149 outros seguidores