Para finalizar o topico, consegui resolver o meu problema usando o TimeTask e Time + servlet
vou posrtar aqui como ficou
// servet que inicia essa classe junto com o tomcat, logo toda vez q derem start no servidor ele ira agendar as tarefas
public class Task implements Servlet {
private static final long serialVersionUID = 1L;
@Override
public void destroy() {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("Iniciando Task");
GenericDao dao = new GenericDao();
Properties props = new Properties();
try {
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("configuracao.properties"));
int empresaId = new Integer(props.getProperty("empresaId"));
int usuarioId = new Integer(props.getProperty("usuarioId"));
UsuarioBean usr = (UsuarioBean) dao.findaById(new UsuarioBean(), usuarioId, new UsuarioBean());
EmpresaBean empresa= (EmpresaBean) dao.findaById(new EmpresaBean(), empresaId, usr);
Timer timer = new Timer();
RetornoTask retorno = new RetornoTask(empresa, usr);
timer.scheduleAtFixedRate(retorno, retorno.getDataInicio().getTime(), retorno.getTempo());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
}
}
//adicioar ao web.inf para registrar o servlet
<servlet>
<servlet-name>Task</servlet-name>
<servlet-class>br.com.factoring.task.Task</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
// classe q executa a ativade q eu desejo
public class RetornoTask extends TimerTask {
private long tempo;
private Calendar dataInicio;
private CNAB240ChequeModel model;
private GenericDao dao = new GenericDao();
private EmpresaBean empresa;
private UsuarioBean usr;
private TaskBean taskBean;
private final String start = "Processando Retorno";
private final String fim = "Fim do Processo";
private final String sucesso = "Retornos Processados Com Sucesso";
private final String erro = "Erro Processamento";
public RetornoTask(EmpresaBean empresa, UsuarioBean usr) {
this.dataInicio = new GregorianCalendar();
dataInicio.set(GregorianCalendar.MINUTE,0);
dataInicio.set(GregorianCalendar.HOUR_OF_DAY,18);
this.tempo = 1000*60*60*24;// a cada 24 hrs
this.model= new CNAB240ChequeModel();
this.dao = new GenericDao();
this.empresa = empresa;
this.usr = usr;
this.taskBean = new TaskBean();
}
public void run()
{
try {
System.out.println(start);
if (model.processarRetorno(empresa, usr)){
System.out.println(sucesso);
taskBean.setAtividade(sucesso);
}
else{
System.out.println(erro);
taskBean.setAtividade(erro);
}
System.out.println(start);
} catch (Exception e) {
e.printStackTrace();
System.out.println(erro);
}
finally{
System.out.println(fim);
dao.merge(taskBean, usr);
}
}