我有一个包含两场战争的耳朵。 war 1具有用于身份验证的所有形式,war 2具有用户可以使用的应用程序。通过超链接将用户从战争1中的主页重定向到战争2中的应用主页。当用户登录并导航到第2版中的页面时,会话将丢失,因为上下文不同并且新上下文会创建新会话(根据我的理解)。有什么办法可以在两个上下文之间共享会话数据吗?我正在使用带有netbeans的JSF 2.1和glassfish 3服务器
答案 0 :(得分:0)
我使用WAS会话共享功能启用了此功能,允许我在同一个耳朵中共享2个WAR之间的会话。 但之后我遇到了另一个与JSF共享会话的问题,2战争的导航规则有些混淆,例如当我从第一次战争转到第二次战争时使用超链接当我在第二次战争中导航时我得到了这个来自JSF的错误:
没有导航案例匹配viewId /dir1/dir2/war2page1.xhtml,action#{springManagedBean.beanAction(param)}和results navigationOutcomeName
因为似乎共享会话的一些方法是如何使第一个WAR的导航规则替换第二个WAR的导航规则。
答案 1 :(得分:-1)
您可以将其保存在ServletContext中,而不是会话中。 servletcontext保持值,直到服务器关闭。这里有一些主题,解释了如何通过不同的servletcontexts共享数据