为了账号安全,请及时绑定邮箱和手机立即绑定

其中使用多个服务器存储上下文属性 (J2EE)

其中使用多个服务器存储上下文属性 (J2EE)

繁星淼淼 2022-09-07 20:57:17
我目前正在开发一个使用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 处理会话属性,则必须对其进行序列化,这是集群的要求。通过将会话属性的某些字段声明为瞬态字段,可以使这些字段成为非聚类。


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号