Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring任务时间表_Java_Spring_Scheduled Tasks - Fatal编程技术网

Java Spring任务时间表

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:

我第一次使用Spring任务执行器系统,只是无法让它工作

我已经读过关于这一点的文章,但没有迹象表明任务正在执行。首先,我在我的服务bean上尝试了@Scheduled注释,但在了解到这在AOP代理中遇到了问题后,我使用了直接的XML配置,因此:

<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>
通过使用调试日志记录设置运行,我知道以下几点:

  • 加载bean并初始化
  • 如果我错误地键入了“method”属性的名称,则会引发异常,因此至少会解析任务定义
  • 调试语句中没有任何指示任务激活的内容
  • 测试方法中的断点永远不会触发
  • 我希望在我的应用程序或spring单元测试运行时,每隔5秒就能看到控制台上打印的test()方法的消息。我正在使用Spring3.0.6,并在Mac10.6Java6上通过Eclipse3.7中的Jetty测试该应用程序。我们使用的所有其他Spring特性(数据库、安全性、MVC工作正常)。如果您有任何建议,我将不胜感激

    试试这个:

     <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