【发布时间】:2013-04-10 05:39:57
【问题描述】:
我正在使用 JSP 和 Servlets 开发 Web 应用程序(容器:Tomcat7,数据库:Oracle10)
我开发了一些 Web 应用程序,例如 Profile、Reports、Leads。然后我开发了一个Login 应用程序。在此应用程序中,我将 USERID 存储在 Session 中,并带有更多会话属性。
用户登录后,他将看到包含指向其他应用程序的链接的菜单,例如指向Profile 应用程序的链接。
所以当我在用户登录后访问Session时:
- 如果我尝试使用同一个应用程序(登录)访问会话,那么我将获得具有所有必需属性的会话
- 但是当我尝试从其他应用程序访问会话时,例如
Profiles然后我得到会话null
编码 sn-p 以检查会话(登录 Web 应用程序中的 Servlet 过滤器)
HttpSession session = request.getSession(false);
if(session==null)
{
System.out.println("Session does not exist... Redirected to LOGIN Page.");
response.sendRedirect("/ApplicationName/Login.jsp");
}
我正在访问Profile 应用程序中的会话以检查用户是否已登录。
然后我搜索了一下,发现Session出于安全原因不能从其他应用程序访问。(我也发现可以通过设置crossContext="true"来完成)
然后我找到了其他选项,例如将EAR 设置为所有应用程序然后部署它,但不幸的是EAR Tomcat7 不支持它。
我是网络环境的新手,所以如果有人在此之前做过这方面的工作,请告诉我有哪些选择?
提前致谢
更新1
现在我决定使用EAR,我将在其中打包所有WAR 文件,然后尝试在它们之间共享会话。由于Tomcat不支持EAR我已经安装了Oracle Glassfish,然后我创建了Enterprise Application Project,其中包含两个应用程序1. Login和2. Profiles,然后创建了EAR文件,并将其部署在Glassfish上.
所以我想在这两个应用程序之间共享会话(在 Glassfish 上),所以如果有人对此有任何想法,请告诉我。 (链接到任何教程也将不胜感激)
【问题讨论】:
-
表示您希望在同一 Web 服务器上运行的多个应用程序之间共享数据。这可以通过在 Web 服务器 Catalina 中进行一些操作来完成。我认为不会有另一种方法可以做到这一点,
-
@Nikhil 是的,我想在同一 Web 服务器(tomcat7)上运行的多个应用程序之间共享数据
-
stackoverflow.com/questions/9293350/…关键字:域级会话cookie
-
单点登录可能对您有所帮助
-
我认为您需要重新考虑您的架构。登录不应是应用程序。它应该是您的应用程序使用的模块或服务。
标签: java jsp tomcat servlets glassfish