@WebListener()
public class BirthdayMailListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("Inicie el servidor, cree un ServletContext para su ejecución");
Timer timer = new Timer();
String firstTimeStr="2020-02-22 10:00:00";
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date firstTime=null;
try {
firstTime = simpleDateFormat.parse(firstTimeStr);
System.out.println("BirthdayMailListener firstTime"+firstTime);
} catch (ParseException e) {
e.printStackTrace();
}
/ * Asignar tareas al objeto del temporizador.
Descripción de parámetros:
tarea: interfaz TimerTask, objeto de tarea de temporizador, debe crear una clase interna anónima y escribir el código que se ejecutará en el método de ejecución
firstTime: la hora de la primera ejecución, el tipo es Date
período: el intervalo periódico de ejecución de la tarea, en milisegundos.
*/
timer.schedule(new TimerTask() {
@Override
public void run() {
UserService userService = new UserService();
List<User> userList =userService.getBirthdayUsers();
System.out.println("BirthdayMailListener userList"+userList);
for (User user :userList) {
try {
MailUtils.sendMail(user.getEmail(),"Correo de cumpleaños","¡¡¡Feliz cumpleaños a ti!!!");
System.out.println("Hoy es"+user.getUsername()+"Cumpleaños, le ha enviado un correo electrónico de cumpleaños");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
},firstTime,24*60*60*1000);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162