Serviço J2EE. É possível?

14 respostas
sr.sucesso

Sras. e Srs.,

Este é meu primeiro post aqui no fórum do GUJ. Trabalho faz uns 3 anos com java e j2ee, mas nunca tive a vontade de me certificar. Agora que estou estudando pra prova, percebo como é maravilhosa e ao mesmo tempo complexa essa linguagem. Mas, vamos a luta, e aos estudos…

Apresentações à parte, será que alguém pode me ajudar? Num sistema, eu tenho um “serviço” manual, onde uma página, quando aberta, fica atualizando um BD a partir de outro de 5 em 5 minutos. Gostaria de criar uma espécie de serviço pra rodar junto com um server JBOSS. Quando digo serviço, quero dizer, algo que suba junto com o JBOSS, para que ninguém esqueça de colocar a atualização no ar, caso haja uma parada no servidor. Esse tipo de “serviço” é possível nos J2EE Servers (JBOSS, Tomcat, etc) ou eu vou ter que criar um serviço em J2SE???

Agradeço à todos pela atenção. Abraços.

14 Respostas

Rafael_Steil

De uma olhada no Quartz - http://www.opensymphony.com/quartz/

Ele funciona bem no estilo do crontab (agendador de servidor de sistemas unix-like)

Rafael

sr.sucesso

Bacana Rafael… estou olhando esse Quartz…

Isso quer dizer que realmente não existe nada no J2EE que possa fazer isso!? Tenho que apelar pra uma aplicação client rodando no server pra estar fazendo esse serviço?

Rafael_Steil

No client? nao, nao… voce pode deixar isso no servidor sem problema algum - por exemplo, se voce quiser iniciar o servico quando a sua aplicacao subir, basta colocar o codigo de setup do quartz no init da tua aplicacao.

Rafael

sr.sucesso

Quando disse “client”, na verdade era me referindo a uma “aplicação” no server… desculpe se me expressei mal…

Cara, estou lendo aqui o JBOSS Admin Development Guide, e encontrei uma coisa que achei no Tomcat também: MBean. Aparentemente, por causa da estrutura básica:

package org.jboss.system;

public interface Service

{

public void create() throws Exception;

public void start() throws Exception;

public void stop();

public void destroy();

}

Talvez seja essa a solução dos meus problemas… Já ouviu falar disso?

sr.sucesso

sr.sucesso:
Quando disse “client”, na verdade era me referindo a uma “aplicação” no server… desculpe se me expressei mal…

Cara, estou lendo aqui o JBOSS Admin Development Guide, e encontrei uma coisa que achei no Tomcat também: MBean. Aparentemente, por causa da estrutura básica:

package org.jboss.system;

public interface Service

{

public void create() throws Exception;

public void start() throws Exception;

public void stop();

public void destroy();

}

Talvez seja essa a solução dos meus problemas… Já ouviu falar disso?

Aí Galera… depois de muito pesquisar varando a madrugada na frente deste PC, encontrei a solução: no JBOSS, usando JMX, existe um MBean de agendamento de serviços, parecido com o TimerMBean, só que mais simples por se tratar de classe do próprio JBOSS. Assim que conseguir fazer funcionar com o genérico Timer do JMX, eu posto as duas soluções.

Valeu galera! 8) (vou dormir…)

cv1

Se voce tem certeza absoluta de que a sua aplicacao nunca vai ser instalada em nada alem de JBoss, vai fundo… :wink:

mcampelo

Isso precisa realmente estar no App. Server?

Porque não fazer uma app. StandAlone utilizando Timer e TimerTask? Ou se a coisa for mais complexa, utilizando o Quartz, sugerido pelo Rafael?

Abraços,
Marco Campêlo

pcalcado

MBeans são legais quando você precisa gerenciar a interface de fora do AS (aliás, apra isso que JMX serve). Você pdoe federar MBeans, usar com SNMP, etc.

Shoes

sr.sucesso

Grande Marco,

Olha o case: hoje os caras tem uma página que deve ficar aberta em um computador separado que realiza a atualização de um BD para outro. Então se o cara não ligar o computador, abrir a página, ou fechar a página sem querer, adeus integridade! A idéia era tirar o erro humano, ou seja, a criação de um serviço. Criando ele no formado do JMX, ele é compatível com o JBOSS, Tomcat, ou qualquer AS que seja compatível… Assim, ganhamos portabilidade, automação (estando no deploy, o servidor subiu, o serviço sobre automático), e tiramos essa página tosca.

Dei uma olha no Quartz, bem bacana, mas é melhor usar uma solução caseira, porque o problema é bem simples, porque sabe como é suporte de empresa: pra instalar algo novo no servidor tem que testar, homologar, bla bla bla… e aí vai…

Estou estudando com o Timer/TimerTask/TimerMBean que deixa genérica a solução. Mas em urgência, a solução JBOSS (pacote .sar) vai ser implementada.

Obrigado pela força galera.

mcampelo

Você realmente considera a solução do MBean do JBoss mais simples do que fazer um aplicaçãozinha utilizando o Timer e TimerTask que fica rodando em background no seu servidor e de 5 em 5 minutos faz a cópia de dados de um BD para outro?

Não vejo onde você ganha em portabilidade usando um MBean no JBoss. Você está é adicionando um complicador.

Aliás, para o que você quer fazer crontab + shell script (ou até mesmo uma classe Java) já resolveria o problema muito bem.

Abraços,
Marco Campêlo

sr.sucesso

Uma aplicaçãozinha simples realmente é o mais simples. Porém, sempre tem um “esperto” que vai fechar a janela dela, assim como tem um “esperto” que esquece de abrir a página. Mesmo sendo no server, ainda há a possilibilidade de alguém dar mancada. O MBean não é exclusivo do JBoss, e sim de qualquer server que seja compatível com o JMX. A idéia é que fique independente de ter que abrir um novo programa. O pacotinho .sar estando no deploy fica automático…

O único problema aqui é que quero tirar a possilibilidade de alguém esquecer de subir o serviço, que é exatamente o problema atual.

Por curiosidade, o que é crontab?

mcampelo

http://www.devin.com.br/eitch/crontab/

[]'s
Marco Campêlo

T

cron é o agendador de tarefas do Unix.

A crontab file contains instructions to the cron( 8 ) daemon
of the general form: ``run this command at this time on
this date’’. Each user has their own crontab, and com-
mands in any given crontab will be executed as the user
who owns the crontab. Uucp and News will usually have
their own crontabs, eliminating the need for explicitly
running su(1) as part of a cron command.

http://www.rt.com/man/cron.8.html
http://www.rt.com/man/crontab.5.html

sr.sucesso

Bacana… não conhecia… Se o server for Linux, deve ficar bom tb…

valeu!

Criado 28 de maio de 2005
Ultima resposta 30 de mai. de 2005
Respostas 14
Participantes 6