【问题标题】:how to send email automatically using jsp/servlet at partcular time(10'clock in the morning) daily [closed]如何在每天的特定时间(早上 10 点)使用 jsp/servlet 自动发送电子邮件 [关闭]
【发布时间】:2017-06-08 12:55:00
【问题描述】:

如果tomcat服务器处于开启模式,我想通过从数据库中获取数据在每天的特定时间使用j2ee自动发送电子邮件

【问题讨论】:

  • 这不是 jsp/servlet 的用途。了解石英
  • 任务完成,谢谢大家

标签: java tomcat jakarta-ee


【解决方案1】:

您可以尝试使用 cron 作业

Main.java

public class Main{
   public static void main(String[] args){

     Timer t = new Timer();
     YourTask yourTask= new YourTask();
enter code here
     // This task is scheduled to run every 5 seconds

     t.scheduleAtFixedRate(yourTask, 0, 5000);
   }

}

你的任务

class YourTask extends TimerTask{

   public YourTask (){
     //Some stuffs
   }

   @Override
   public void run() {
//TODO
Your business logic
   }

}

如上代码所示,你可以调用你的特定时长的业务逻辑。

在这里,我每隔 5 秒调用一次特定的业务逻辑。

对于 Timer timerTimerTask timertask

【讨论】:

  • 时间不是最佳实践,如果线程由于某些异常而停止,它将无法正常工作,而是应该使用 ScheduledExecutorService
  • @gatisahu 如果线程由于某些异常而停止,我们必须停止执行,否则会影响主要业务逻辑。
  • 如果是暂时性异常则否
  • 我们还是要管理。
  • 我不认为这是您停止服务的某些异常的最佳做法。所以您的服务应该只在您无法恢复的错误中停止
【解决方案2】:

您可以使用quartz-scheduler 等第三方库来安排您的任务。

Here你可以查看示例,如何创建每天执行的触发器。

 trigger = newTrigger()
    .withIdentity("trigger3", "group1")
    .startNow()
    .withSchedule(dailyAtHourAndMinute(15, 0)) // fire every day at 15:00
    .build();

【讨论】:

  • 感谢@yaroslav 的快速回复,你能把简单任务的jsp/servlet示例代码发给我吗
  • 您询问了两个不同的源代码层。因此,对于 servlet 的使用,您可以检查任何示例,例如:javabycode.com/java-frameworks/servlet-jsp/…,并且在执行“doGet”方法的地方,您可以放置​​您的调度程序任务(例如我在上面提供的,但不要忘记包括您项目的石英依赖项)
  • 任务顺利完成,谢谢大家
  • 不客气。如果对您有帮助,请点赞并接受答案
【解决方案3】:

使用 ScheduledExecutorService 或如下所述的第三方库,如 Quartz

private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
 scheduler.scheduleAtFixedRate(yourRunnable, 8, 8, TimeUnit.HOURS);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2011-04-15
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多