Java Spring任务时间表
我第一次使用Spring任务执行器系统,只是无法让它工作 我已经读过关于这一点的文章,但没有迹象表明任务正在执行。首先,我在我的服务bean上尝试了@Scheduled注释,但在了解到这在AOP代理中遇到了问题后,我使用了直接的XML配置,因此:Java Spring任务时间表,java,spring,scheduled-tasks,Java,Spring,Scheduled Tasks,我第一次使用Spring任务执行器系统,只是无法让它工作 我已经读过关于这一点的文章,但没有迹象表明任务正在执行。首先,我在我的服务bean上尝试了@Scheduled注释,但在了解到这在AOP代理中遇到了问题后,我使用了直接的XML配置,因此: <task:executor id="executorWithPoolSizeRange" pool-size="5-25" queue-capacity="100" /> <task:
<task:executor id="executorWithPoolSizeRange"
pool-size="5-25"
queue-capacity="100" />
<task:scheduler id="taskScheduler" pool-size="2" />
<task:scheduled-tasks>
<task:scheduled ref="fileWriter" method="test" fixed-rate="5000" />
</task:scheduled-tasks>
通过使用调试日志记录设置运行,我知道以下几点:
<task:scheduled-tasks scheduler="taskScheduler">
<task:scheduled ref="fileWriter" method="test" fixed-rate="5000" />
</task:scheduled-tasks>
试试这个:
<task:scheduled-tasks scheduler="taskScheduler">
<task:scheduled ref="fileWriter" method="test" fixed-rate="5000" />
</task:scheduled-tasks>
如果您没有尝试将Quartz添加到类路径中(您不应该需要它,但是…) 最可能发生的情况是调度程序正在运行,并且无法执行您的代理。代理可能会抛出异常,而调度程序的异常策略可能会丢弃该异常 另一个选择。。。(我可能会被否决)就是不使用Springs调度器。除非您需要Quartz Cron之类的东西,否则我发现Springs任务调度器过于复杂,但与以下内容相比仍然很弱:
侦听执行器服务将允许您链接事件。您可以很容易地将上述内容包装到一些服务bean中。是的,我知道您可能想要Spring提供的解耦功能。。。但是,如果您还没有尝试将Quartz添加到类路径中(您不需要它,但是…),那么通过结合ExecutorService和.,您可以获得更好的解耦和基于事件 最可能发生的情况是调度程序正在运行,并且无法执行您的代理。代理可能会抛出异常,而调度程序的异常策略可能会丢弃该异常 另一个选择。。。(我可能会被否决)就是不使用Springs调度器。除非您需要Quartz Cron之类的东西,否则我发现Springs任务调度器过于复杂,但与以下内容相比仍然很弱:
侦听执行器服务将允许您链接事件。您可以很容易地将上述内容包装到一些服务bean中。是的,我知道您可能想要Spring提供的解耦功能。。。但是,通过将ExecutorService和结合起来,可以更好地实现解耦和基于事件。我没有将它与XML结合使用,但是当我将它与注释结合使用时,那么正在调度的类必须具有@Component注释。您对fileWriter的定义是什么?感谢您的回复-
,我添加了一个组件注释,并将包添加到扫描列表中:
。但是仍然没有激活该方法(我在@Service bean中调度方法时也没有),只是意识到我在前面的注释中输入了错误的包名:应该是com.blah.archive.FileArchiveWriter
和
,我个人觉得注释更容易处理。忽略AOP问题它与注释一起工作吗?如果是这样的话,那么您可以在使用注释后将其转换为xml。不,正是由于注释没有成功,才促使我尝试使用xml配置。我同意注释的使用更具吸引力,如果我能让这些东西发挥作用,这将是我的首选!我没有在XML中使用它,但是当我在注释中使用它时,被调度的类必须有@Component注释。您对fileWriter的定义是什么?感谢您的回复-
,我添加了一个组件注释,并将包添加到扫描列表中:
。但是仍然没有激活该方法(我在@Service bean中调度方法时也没有),只是意识到我在前面的注释中输入了错误的包名:应该是com.blah.archive.FileArchiveWriter
和
,我个人觉得注释更容易处理。忽略AOP问题它与注释一起工作吗?如果是这样的话,那么您可以在使用注释后将其转换为xml。不,正是由于注释没有成功,才促使我尝试使用xml配置。我同意注释的使用更具吸引力,如果我能让这些东西发挥作用,这将是我的首选!谢谢,不过没有成功。我知道,如果没有明确提到调度程序,则使用默认调度程序。你知道在启动过程中,我应该寻找哪些日志语句来提供可能(不)发生的事情的线索吗?嗯。。。也许你们班有问题?尝试用一种方法使用一些简单的类。另外,尝试增加您的调度程序池。我认为这与配置有关。。。现在,我已经在Spring JUnits中使用XML配置运行了它,方法是在测试的ContextConfiguration注释中对类路径元素列表重新排序(有趣的是,它似乎在每个时间点多次命中该方法),但即使在web.XML中对配置文件进行相同的排序,应用程序本身仍然没有任何内容。但至少它现在似乎可以工作了……(有趣的是,它似乎在每个时间点都会多次命中该方法)
似乎您正在初始化同一个bean的多个实例。是的,这是运行Spring Junit测试的一个工件-每个测试类都启动了一个新的调度程序。无论如何,很抱歉成为失败主义者,谢谢你的建议,但我现在不得不放弃,我不知道为什么它会在测试中运行,但不会在应用程序中运行。我已经建立了一个老式的Ti