Num dos sistemas da empresa em que trabalho, preciso que uma tabela do MySQL seja atualizada com dados do Sybase. Para isto, estou pensando em fazer um Message Driven Bean para executar esta tarefa. A atualização que é feita hoje, de dados de outras tabelas, é por um script agendado no cron. Um MDB seria adequado nesta situação? Como é uma atualização de dados assíncrona, achei que poderia ser adequado…
pelo que eu intendi do seu ambiente você tem duas opções e o conselho seria você utilizar a que tiver mais afinidade:
ou um timer service acessando um mdb e mandando ele fazer isso;
ou uma aplicação batch em jse para fazer isso.
se você ja usa um ejb container para qualquer coisa nesse ambiente ,para alguma parte online desse software por exemplo, uma aplicação web ou alguma outra coisa, acho que pode ser melhor você escolher a primeira opção, caso negativo eu ja acho que nem vale a pena.
claro que isso tudo que eu disse me parece ser questão de gosto.
MDB não se encaixa pq vc terá que disparar o evento automaticamente…MDB não faz isso!
Dentro de um container EJB, o produto que faz isso é o timer service, que pode executar um session bean mesmo.
Se o seu container for um Container JEE 6, uma solução interessante seria utilizar um EJB Singleton
utilizando TimerService.
@Singleton
@Startup
public class UpdateTableBean {
@Schedule(dayOfWeek="", hour="", second="", minute="", dayOfMonth="", month="", year="")
public void automaticTimeout() {
// update table here
}
}
Ficaria com um processo batch mesmo, extraindo os dados do Sybase através de BCP out, e criando uma funcionalidade de import pro MySQL.