重新启动我的 tomcat 实例后,servlet 上下文的所有属性都将丢失,尽管所有活动会话仍在周围,它们的属性仍处于活动状态。使 servlet 上下文属性在容器重新启动后仍然存在的最好的和最类似于 Grails 的方法是什么?
问问题
375 次
3 回答
1
ServletContext 不是持久的,并且是不可分发的。它没有实现可序列化。
http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html
Servlet 规范的第 4 章涉及 ServletContext,它确实描述了其中设置的属性将被持久化的任何期望。为此,通常使用某种数据库。
于 2012-06-05T20:24:42.510 回答
1
是的,序列化 servlet 上下文属性不是一个好主意。
后Servlet 上下文可序列化属性持久性正是在谈论这个......
servlet 容器突然终止的可能性不为零,而您的 webapp 没有机会保留其属性。
您的 servlet 上下文中包含的属性应该与您的 Web 应用程序完全分开处理,因为它们不能在容器重新启动时得到保证(而您的应用程序的属性可以在您认为合适的情况下保留)。
于 2012-06-08T12:04:09.143 回答
1
AFAIK 没有真正的 Grails'ish 方法可以做到这一点。遵循标准 Servlet API,实现 aServletContextListener
并将其注册到 web.xml 直接或通过webxml 插件。
该ServletContextListener
实现应该使用普通的 java 反序列化。
于 2012-06-05T14:04:18.370 回答