可刷新的Bean没有最后修改的标题

时间:2011-03-21 17:35:18

标签: spring groovy

在我的应用程序上下文文件中,我定义了一个Groovy“可刷新”bean。 bean使用http:前缀定义(见下文)。我遇到的问题是我们的Web服务器不发送最后修改的头,可刷新的bean需要确定脚本是否已被修改。

我需要在我们的Web服务器上托管脚本,并且我无法修改服务器配置以发送最后修改的标头。因此,我能想到的唯一选择是通过调用bean上的某个方法来手动强制刷新。

有没有办法,鉴于下面的bean,我可以强行刷新?

<lang:groovy id="messenger" refresh-check-delay="1000" 
        script-source="http://10.74.192.111/groovy/GroovyMessenger.groovy" />

我可以创建一个可以添加forceRefresh方法的GroovyObjectCustomizer吗?

由于

1 个答案:

答案 0 :(得分:1)

如果替换脚本工厂后处理器bean的标准实现,我会说问题应该修复。

解释时间很长,与思想相同 http://www.ibm.com/developerworks/java/library/j-groovierspring1.html
http://www.ibm.com/developerworks/java/library/j-groovierspring2.html
http://www.springone2gx.com/blog/scott_leberknight/2010/10/database_backed_refreshable_beans_with_groovy_and_spring_3
最后一个链接是原始系列的补充,以防你使用spring 3(我认为应该是你的情况)

简而言之,您会想要一种不同类型的org.springframework.scripting.ScriptSource,一种在被询问是否被修改时始终返回true的{​​{1}}。标准实现将询问基础org.springframework.core.io.Resource实现,在您的情况下, 返回false作为检查http头请求的标头内容的结果。您可以使用自定义org.springframework.scripting.support.ScriptFactoryPostProcessor执行此操作。

但是再次检查那里的文章。它们包括对所需更改的非常详细的解释。