问题标签 [spring-scheduled]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
51069 浏览

java - 将外部化值注入 Spring 注解

我一直在考虑在编译时评估注释值的 Java 特性,它似乎确实使外部化注释值变得困难。

但是,我不确定这是否真的不可能,所以我很感激任何建议或明确的答案。

更重要的是,我正在尝试外部化一个注释值,该值控制 Spring 中计划的方法调用之间的延迟,例如:

假设它scheduling.properties在类路径上并且包含属性键delayValue及其对应的长值。

现在,这段代码有明显的编译错误,因为我们试图为final变量赋值,但这是强制性的,因为我们不能将变量赋值给注释值,除非它是static final.

有没有办法解决这个问题?我一直在考虑 Spring 的自定义注解,但根本问题仍然存在——如何将外部化的值分配给注解?

欢迎任何想法。

编辑:一个小更新 - 对于这个例子来说,Quartz 集成是多余的。我们只需要以亚分钟分辨率定期执行,仅此而已。

0 投票
7 回答
105811 浏览

java - 以编程方式使用 Spring 调度作业(动态设置 fixedRate)

目前我有这个:

我可以将其更改为使用对属性的引用

但是,我需要使用以编程方式获得的值,以便可以在不重新部署应用程序的情况下更改计划。什么是最好的方法?我意识到使用注释可能是不可能的......

0 投票
3 回答
3224 浏览

spring - 如何使长时间运行的@Scheduled spring 方法,休眠工作?

我尝试制作一个 Jersey 网络服务,允许客户创建工作。这些作业存储在数据库中,使用 Hibernate 作为持久性提供程序。这些作业将由计划服务在后台执行,我想用 Spring 来安排。

我创建了一个 Spring Scheduled 方法,如下所示:

因为 Job 会运行很长时间,所以我需要让 job.start() 向数据库报告状态变化(从 QUEUE 到 IN_PROGRESS)。之前,我使用命令行实现并拥有自己的事务管理,基本上begin()commit()job.start().

现在我需要使用 Spring 使其工作......

关于如何分离关注点并使其发挥作用的任何建议?

0 投票
1 回答
3621 浏览

java - 带有@Scheduled Spring 注解的方法的切入点

我想为带有注释的方法创建一个 AspectJ 切入点@Scheduled。尝试了不同的方法,但没有任何效果。

1.)

2.)

任何人都可以建议任何其他方式来获得around/before建议带@Scheduled注释的方法吗?

0 投票
1 回答
256 浏览

configuration - 使用 Tomcat 在一个 VPS 上设置多个 Web 应用程序

我需要使用 Tomcat 在一个 VPS 上正确部署多个 Web 应用程序。

有人告诉我,使用多个标签是这样做的关键,但是在设置多个标签之后,我注意到我的 Spring 计划作业执行的次数与主机标签一样多(所以如果我有两个主机标签,我预定的作业将运行两次)。

我想知道是否有某种方法可以让多个域名都路由到相应的 Web 应用程序,而我的 server.xml 文件中只有一个标签。

例如,我希望有以下域路由,如下所示:

www.webapp1.com -> Tomcat/webapps/WebApp1
www.webapp2.net -> Tomcat/webapps/WebApp2
www.webapp3.org -> Tomcat/webapps/WebApp3

如果您需要更多信息,请告诉我,因为您可以给我的任何帮助将不胜感激(我已经被困了几个星期了)。

0 投票
1 回答
704 浏览

java - Spring Scheduler - 当存在循环依赖时,调度方法不会在事务中启动

我正在开发一个使用 Spring 3、Hibernate 和 JPA 的应用程序。我有两个类如下:

应用程序上下文的相关部分如下:

使用此配置,我得到以下异常

如果我从 Util 类中删除 Manager 类的自动装配,它工作正常。此外,在调试时,我发现即使应用程序上下文文件中存在一些错误,计划的方法也会开始执行。

由于某些遗留原因,我无法避免循环依赖。有人可以帮助为什么在循环依赖的情况下会发生此异常吗?

0 投票
2 回答
1998 浏览

java - 计划作业中的 Spring 应用程序 URL

是否可以在春季计划作业(@Scheduled 注释)中获取应用程序 URL?我想创建一个作业,将带有 URL 的电子邮件发送到应用程序上的特定页面,比如说在http://localhost:8080/appName/some/specific/url. 问题是部件http://localhost:8080/在每个环境(本地、开发、生产等)中都会有所不同。

是否有任何简单的方法可以在由 spring 调度程序执行的服务器端方法中获取基本 URL?

0 投票
1 回答
1256 浏览

java - @Async 通过代理类在 Spring 3.2 中创建异常

我似乎想出了一个问题。

我有一堂课

和一个包含

在我拥有的代码的某些部分

但我得到了这个例外

我可以理解它是一个代理类,但不确定为什么 Spring 不允许转换代理。

我在类路径上有 cglib 2.2 no dep,以及 Spring 3.2 核心库。

任何人都可以指出解决这个问题的任何线索吗?

简而言之,我希望一个方法在调用时是异步的。

0 投票
3 回答
4395 浏览

java - Spring 的 @Scheduled cron 作业在预定时间之前触发了几毫秒

我已经为 Spring 设置@Scheduled了每小时的 cron 表达式,如下所示 where trend.olap.local.loading.cron.expressionis 0 0 * * * ?

在这里,我的意图是从当前日期和时间获取小时值并将其传递给 executor 方法。

基本上,我将当前小时减去 1,以便在 17:00 时,小时值应为 16。

但是如果您查看日志,则小时值是 15。这是因为调度程序在 16:59:59,831 左右运行。请参阅下面的 log4j 日志。看起来 cron 作业正在四舍五入毫秒并在 17:00:00,000 之前几毫秒被触发。

正因为如此,我得到了错误的价值观,我的商业案例失败了。

如何使 cron 在每小时的第 0 毫秒而不是几毫秒之前精确运行?

0 投票
2 回答
535 浏览

java - Spring 实现 - 循环定时器

我已经看到有关 timertask 问题的各种线程。但是,我想对 Spring Scheduler API(3.1)的内部工作进行一些澄清。

我要求每 10 秒启动一次计时器。该应用程序在集群的 websphere zos 中运行。(至少 4 个 jvm 节点)。

这里是接线。

我已经为 processDataFeedMetadata 方法定义了 (@async)。

我看到的问题是计时器每 10 秒正确触发一次(4 个 jvm - 每分钟 24 个计时器发生),几个小时后开始出现异常行为(2 或 3 个 jvm 完全停止触发任何计时器 - 6 到 12 个计时器发生每分钟)。我了解 timertask 实现有其自身的限制。但是,如果我从 MethodInvokingTimerTaskFactoryBean 调用 ASYNC 方法,为什么 timertask 行为不当,因为 (1) timer 应该在调用 ASYNC 方法后立即在间隔内完成。(2) 我没有从应用程序日志中看到任何异常,并且 MethodInvokingTimerTaskFactoryBean 应该已经处理并消耗任何异常(如果有)。

如果有人对这里发生的事情有意见,真的很感激?