我已经看到一些开发人员在寻找解决此问题的方法:从不同的WAR(即使在同一EAR中)访问会话信息 -以下是一些示例:在tomcat中不同应用程序之间共享会话状态的任何方法?,访问另一个Web应用程序的会话,不同的WAR文件,共享资源,Tomcat:如何在两个应用程序之间共享数据?,crossContext属性在Tomcat中做什么?是否启用会话共享?等等...
从我搜索过的所有内容来看,有一些特定的解决方案取决于容器,但这在某种程度上“ 与规范相反 ”。我也浏览了Java EE规范,但没有找到答案的运气。
一些开发人员谈论Web应用程序之间的耦合,但是我倾向于不同意。如果不耦合,将WAR保留在同一个EAR中的原因是什么?例如,可以在本地访问EJB(即使在同一EAR中的另一个EJB JAR中也可以访问)。
更具体地说,我的一个WAR处理身份验证和授权,并且我想与其他WAR(在同一EAR中)共享此信息。在将WAR打包为JAR并将它们放入单个WAR项目(WEB-INF / lib)之前,我设法解决了类似的问题。但是我不喜欢这种解决方案(它需要在servlet命名上付出巨大的努力等等)。
而且没有解决方案可以回答第一个(也是最重要的)问题:为什么WAR无法共享会话信息?