在容器重启后,在Grails中保留servlet上下文

时间:2012-06-05 11:45:25

标签: grails servlets reboot

重新启动我的tomcat实例后,servlet上下文的所有属性都将丢失,尽管所有活动会话仍处于活动状态并且其属性处于活动状态。什么是最好的 - 也是最像Grails的 - 在容器重启时能够生存servlet上下文属性的方法?

3 个答案:

答案 0 :(得分:1)

AFAIK没有真正的Grails'ish方式来做到这一点。遵循标准Servlet API,实现ServletContextListener并使用web.xml直接或通过webxml plugin注册。

ServletContextListener实现应该使用普通的java de- / serialization。

答案 1 :(得分:1)

ServletContext不是持久性的,不可分发。它没有实现Serializable。

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html

Servlet规范的第4章涉及ServletContext,它确实描述了其中设置的属性将被保留的任何期望。通常使用某种数据库。

答案 2 :(得分:1)

是的,序列化servlet上下文属性并不是一个好主意。

帖子Servlet context serializable attribute persistence正好谈到这个......

  

servlet容器突然终止的可能性非零,而不会让你的webapp有机会保留其属性。

servlet上下文中包含的属性应完全与Web应用程序分开处理,因为在重新启动容器时无法保证这些属性(而您的应用程序的属性可以根据需要保留)。