I'm trying to set up some task cycles in TimeTask so that it happens every day at a particular time, could someone give me a tutorial or some example that employs this question? What happens is that it works, but only once, if by chance I try to do another task, I can not. Thank you in advance.
Here is the class I use the TimerTask.
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//import java.sql.Statement;
import java.util.Timer;
import java.util.TimerTask;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
import br.com.email.mundial.Conexao;
public class DiaTeste {
public static final long TEMPO = ( 11 * 1440);
protected static final String Class = null;
public static void main(String[] args) throws SQLException {
final Connection conexao = new Conexao().getConnection();
PreparedStatement stmt = conexao.prepareStatement(
"SELECT P.duplic, "
+ " P.dtemissao, "
+ " P.dtvenc, "
+ " P.valor, "
+ " C.cliente, "
+ " P.obs2, "
+ " c.email, "
+ " P.codcli, "
+ " C.telent, "
+ " Nvl(P.valordesc, 0) VLDESC, "
+ " P.codusur, "
+ " P.prest, "
+ " P.codcob, "
+ " C.ieent, "
+ " C.bloqueio, "
+ " P.duplic "
+ " || '-' "
+ " || P.prest AS TITULO, "
+ " P.numtransvenda, "
+ " P.codfilial "
+ "FROM pcprest P, "
+ " pcclient C, "
+ " pccob B, "
+ " pcfilial F "
+ "WHERE P.codcob = B.codcob "
+ " AND P.codcli = C.codcli "
+ " AND P.codfilial = F.codigo "
+ " AND F.CODIGO = 4 "
+ " AND p.codcob NOT IN ( 'DEVP', 'DEVT', 'BNF', 'BNFT', "
+ " 'BNFR', 'BNTR', 'BNRP', 'CRED', 'DESD' ) "
+ " AND P.dtpag IS NULL "
+ " AND p.dtvenc = To_date(SYSDATE)-1000");
ResultSet rs = stmt.executeQuery();
while (rs.next()){
final String cliente = rs.getString("cliente");
final String dtvenc = rs.getString("dtvenc");
final String valor = rs.getString("valor");
final String EMAIL = rs.getString("EMAIL");
final String duplic = rs.getString("duplic");
Timer timer = null;
if (timer == null) {
timer = new Timer();
TimerTask tarefa = new TimerTask() {
@SuppressWarnings("deprecation")
public void run() {
try {
MultiPartEmail emai = new MultiPartEmail(); //classe utilizada para permitir anexos no email
emai.setDebug(true);
emai.setHostName("120.0.0.0"); //servidor SMTP. Aqui usamos um do Gmail
emai.setSmtpPort(25);
emai.setAuthentication("teste,teste.com.br", "sadsadsadsa"); // login e senha da conta Gmail
emai.setSSL(false); //Autenticação de segurança SSL setada como True
emai.addTo(EMAIL);
// emai.addTo("dsadsadasdsa.com.br"); //nome do email que vai receber o bkp do banco de dados. Pode ser o seu para teste
emai.setFrom("[email protected]"); //endereço de email do remetente
emai.setSubject(" Cobrança de Divida Ativa "); //assunto
emai.setMsg("Prezado( a ) Senhor( a ): " + cliente
+"\n\n\n Após diversos contatos telefônicos, visando uma solução rápida e eficaz quanto à necessidade de imediata liquidação por parte de V.S .a do "
+ "título de crédito infra-identificado e, considerando que os referidos contatos não contaram com a colaboração e providência de V.S.a, servimo-"
+ "nos da presente para Notifica-lo formalmente quanto a MORA existente. \n\n"
+ ""
+ " Assim, notifica-se V. As para que no prazo de 48 (quarenta e oito ) horas, contada s do recebimento desta, proceda a liquidação do título em "
+ "questão, devidamente acrescido de juros, taxas de permanência e de mais encargos, o que poderá ser feito através do boleto bancário que se "
+ "encontra em vosso poder ou, alternativamente por meio de depósito bancário em favor da Notificante, através da conta bancária A SER "
+ "INDICADA, sob pena de não o fazendo serem adotadas medidas legais de cobranças, tais como, inclusão em cadastro de inadimplentes, "
+ "remessa da cambial a cartório de protestos e, posterior envio de pendência do Dep. Jurídico. \n\n"
+ ""
+ " Ressaltamos que caso deseje V.S.a promover a liquidação da pendência ora notificada por meio de depósito na conta bancária, deve ser"
+ "mantido contato com nosso departamento financeiro, através do tele fone (0xx62) 265 1001, para obtenção do valor corrigido e acrescido dos "
+ "encargos devidos, bem como do código identificador de depósito, permitindo assim a baixa do título e sustação das medidas de cobrança "
+ "acima nominadas, COMO TAMBÉM DADOS DA CONTA BANCÁRIA. \n\n"
+ ""
+ " Na hipótese da dependência já se encontrar liquidada quando do recebimento da presente, favor desconsiderar o conteúdo. \n\n"
+ ""
+ " Informamos mais, que caso V.S. a promova o pagamento do título em cartório, arcará na ocasião com despesas e juros cartorias, ficando"
+ "pendente ainda os encargos moratórios de taxa de permanência, os quais deverão ser liquidados por meio de depósito identificado junto a "
+ "conta bancária indicada nesta Notificação.\n\n"
+ ""
+ " Certos do interesse e colaboração, desde já agradecemos e ficamos no aguardo da imediata solução da pendência ora apontada e noticiada.\n\n"
+ ""
+ "Duplic. Nº "+ duplic + "\n\nvalor da divida R$" + valor + "\n\ncom data de vencimento para:" + dtvenc);
emai.send(); //envia o email
try {
//Statement stmt = conexao.createStatement();
//preparando para inserir dados de LOG.
String sql = "insert into PCCLIENT" +
" (LOGENVIO)" +
" values (?)";
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setString(1, "carta1");
stmt.execute();
stmt.close();
} catch (SQLException e) {
System.out.println("passei pelo insert");
}
//chamar metodo
} catch (Exception e) {
e.printStackTrace();
}
}
};
timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO);
}
}
}
}