当前位置: 首页 > 面试题库 >

@Schedule注释每隔几分钟(或几秒钟)运行一次

公孙嘉禧
2023-03-14
问题内容

我想尝试通过以下方式使用@Schedule批注:

public class MyTestServlet extends HttpServlet {
    private static JcanLogger LOG = JcanLoggerFactory.getLogger(ServiceTestServlet.class);

    @EJB CronService cronService;

    public void service(HttpServletRequest req, HttpServletResponse resp) throws .... {
    ....
    cronService.iLive(); 
}
---
    @Local // because the ejb is in a servlet (there is no other jvm)
public interface CronService {

    public void iLive();
    public void runsEveryMinute();
}
---
@Singleton
public class CronServiceBean implements CronService {
    private static final JcanLogger LOG = JcanLoggerFactory.getLogger(CronServiceBean.class);

    @Schedule(minute="*")
    public void runsEveryMinute() {
        LOG.info(" runs EveryMinute ");
    }

    public void iLive() {
        LOG.info("iLive");

    }
 ---
 LOG
 ... 
 CronServiceBean:34  ] iLive

根据日志,CronService运行良好,但是计划的任务“ runsEveryMinute”不起作用。

使用EJB计划任务如何工作?


问题答案:

按照该Javadoc中的@Schedule注释,默认值是:

  • *除小时,分钟和秒外的所有字段;和
  • 0 默认情况下为小时,分钟和秒。

通过minute="*"将小时值保留为默认值0,它要求计时器在午夜之后每分钟运行一小时(即00:00、00:01、00:02,…,00:59),然后不再运行直到第二天。而是使用:

@Schedule(hour="*", minute="*")

要每隔几秒钟(例如10几秒钟)运行一次,可以使用类似cron的语法:

@Schedule(hour = "*", minute = "*", second = "*/10", persistent = false)

默认情况下,调度程序保留事件。persistent = false如果需要的话,设置将防止它们随着时间的推移而堆积。



 类似资料:
  • 问题内容: 我在Django中的应用程序 可以 创建一些 非常大的SQL查询。我目前使用一个对象,作为我需要的数据,然后使用一个,以返回要显示给用户的内容。 显然,我可以让用户等待一分钟,同时正在执行这些许多查询集并从数据库中提取查询,然后返回此单一HTML页面。 理想情况下,我想在需要时更新页面,例如: 这可能吗? 问题答案: 我最近发现HttpResponse可以是生成器: 这将逐步将结果返回

  • 我的图像是从网络连接加载的。 我有3个图像,希望在一个ImageView中每2秒更改一次。 例如,图像1 - 当前,我的代码如下:

  • 使用React中的上下文API时,是否可以每隔几秒钟设置一次自动刷新间隔?getData()函数在API上运行axios.get(),但当我在useEffect钩子的返回函数中尝试setInterval()和cleanup时,它仍然不会清理间隔。getData()将当前变量和加载变量设置为应用程序级状态。 我只是想每隔几秒钟刷新并重新执行API调用。我尝试使用useRef()钩子,并使它开始工作,

  • 问题内容: 我想知道,几秒钟后如何在jquery中隐藏div?例如Gmail的邮件。 我已经尽力了,但是无法正常工作。 问题答案: 这将在1秒(1000毫秒)后隐藏div。 如果您只想隐藏而不褪色,请使用。

  • 问题内容: 我正在使用Python和PyGTK。我对运行某个功能感兴趣,该功能每隔几分钟从串行端口获取数据并保存一次。 当前,我正在时间库中使用sleep()函数。为了能够进行处理,我将系统设置如下: 这种设置使我从串口读取数据的间隔为5分钟。我的问题是我希望能够让我的readserial()函数每隔5分钟暂停一次,并且能够一直执行操作,而不是使用time.sleep()函数。 关于如何解决这个问

  • 我有一个定制的Apache Camel组件,它由一个从DefaultConsumer扩展而来的Consumer和没有Producer组成。 我有一个Spring Boot应用程序,与其他几个骆驼路线,都工作得很好。 这在第一次工作,但当下一次触发作业时,它会尝试启动已经运行的路由。 我希望避免修改自定义组件以从DefaultScheduledPollConsumer扩展,因为它并不总是按计划使用。