重新启动我的tomcat实例后,servlet上下文的所有属性都将丢失,尽管所有活动会话仍处于活动状态并且其属性处于活动状态。什么是最好的 - 也是最像Grails的 - 在容器重启时能够生存servlet上下文属性的方法?
答案 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应用程序分开处理,因为在重新启动容器时无法保证这些属性(而您的应用程序的属性可以根据需要保留)。