Spring任务调度程序从jndi延迟

时间:2012-03-07 11:40:12

标签: spring scheduled-tasks jndi

我正在配置一个Spring任务调度程序。

<task:scheduled-tasks scheduler="myScheduler">
        <task:scheduled ref="servicesConfigurationBean" method="loadResources" fixed-delay="300000" />
</task:scheduled-tasks>

它运作正常。现在我想从JNDI查找设置延迟值。所以我尝试了以下内容:

<task:scheduled ref="servicesConfigurationBean" method="loadResources">
    <property name="fixed-delay"><ref local="servicesRefreshRate"/></property>
</task:scheduled>

但现在我获得了以下例外:

  

[/ WEB-INF / spring / applicationContext.xml]无效;嵌套异常是org.xml.sax.SAXParseException:cvc-complex-type.2.1:元素'task:scheduled'必须没有字符或元素信息项[children],因为类型的内容类型为空。[/ WEB-INF /spring/applicationContext.xml]无效;嵌套异常是org.xml.sax.SAXParseException:cvc-complex-type.2.1:元素'task:scheduled'必须没有字符或元素信息项[children],因为类型的内容类型为空。

我理解异常的原因,那么,我的问题是否有可行的解决方案? 感谢。

1 个答案:

答案 0 :(得分:1)

使用<property>将不起作用,因为<task:scheduled>是宏,而不是bean定义。两者的工作方式截然不同。

尝试使用Spring-EL:

<task:scheduled ref="servicesConfigurationBean" 
                method="loadResources" 
                fixed-delay="#servicesRefreshRate" />

我没试过,但试一试。