我目前正在开发一个使用Java EE和Tomcat Server的Wepapp。我正在使用上下文属性,例如:ServletContext context = getServletConfig().getServletContext();
String defaultUser = (String) context.getAttribute("default_user");但最近我读到,在多个服务器中部署 Web 应用时,不建议使用上下文属性。这是真的吗?我该如何解决这个问题?也许我将来会使用几台服务器(AWS或其他东西)。谢谢!PS:我真的只将上下文属性用于只读目的,只是读取配置参数。
1 回答

沧海一幻觉
TA贡献1824条经验 获得超5个赞
例如,请参阅集群环境中的 Servlet 上下文,其中解释了问题:
如果容器分布在许多虚拟机上,则 Web 应用程序将为每个 JVM 提供一个 ServletContext 实例。
上下文属性是创建它们的 JVM 的本地属性。这可以防止 ServletContext 属性成为分布式容器中的共享内存存储。当需要在分布式环境中运行的 servlet 之间共享信息时,应将信息放入会话中、存储在数据库中或设置在 Enterprise JavaBeans 组件中。如果要跨多个 JVM 处理会话属性,则必须对其进行序列化,这是集群的要求。通过将会话属性的某些字段声明为瞬态字段,可以使这些字段成为非聚类。
添加回答
举报
0/150
提交
取消