在会话属性中设置多个对象 - 它没关系?

时间:2014-04-08 15:42:35

标签: java map

我在java动作类中创建了一些Map对象和一些set对象,并在下一个servlet / jsps中获取这些值。这是我正在遵循的好方法还有比这更好的方法...我将这些值存储在一个动作类中并在另一个中使用它们。我这样做是为了防止下一堂课的加载时间,也是出于一些小的原因......

 SessionUtils.setNamespacedAttribute(session, "mapofAllexistingservers", null, mapofallservers);
            SessionUtils.setNamespacedAttribute(session, "mapOriginal", null, mapRight);
            SessionUtils.setNamespacedAttribute(session, "mapleft", null, mapLeft);
            SessionUtils.setNamespacedAttribute(session, "CancelProducts", null, "Cancel");
            SessionUtils.setNamespacedAttribute(session, "networkCollect", null, treeMapNetworks);
            SessionUtils.setNamespacedAttribute(session, "setOfSharedServers", null, setOfSharedServers);

2 个答案:

答案 0 :(得分:1)

这不是那么干净但是还可以。也许你可以将所有map * -attributes包装成一个新的Object(不要忘记serialize-interface)。

如果您钝化会话,则setOfsharedServers可能会解除因为共享服务器在激活会话后不可用。

答案 1 :(得分:1)

在一般实践中,向HttpSession实施添加大量数据基本上没问题。现在,用户级别的几KB之间的差异可以忽略不计。对于大型分布式企业应用程序,您应该开始变得更加吝啬。特别是在部署在多个应用程序服务器上的情况下,最终将支持跨服务器的高可用性群集和负载平衡。为了实现这一点,必须为某些第三方(InfinispanJGroups)负责会话复制。这会多次增加会话对象大小,并增加相当严重的内存和网络开销。在这个时候,你希望你的会议很少。