`

同一tomcat 下的两个应用共享 Session (SSO)

阅读更多

http://www.verydemo.com/demo_c199_i2915.html

http://wenku.baidu.com/view/ea593c1a650e52ea5518981b.html

http://blog.china.com.cn/dengshucai/art/485885.html  (集群)

http://www.linuxidc.com/Linux/2011-04/35275.htm

http://blog.csdn.net/mixer_a/article/details/7555389

 

1: 修改Tomcat---conf----server.xml文件

     把 <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" x  mlValidation="false"></Host> 修改为:


 <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" x  mlValidation="false">

    <Context path="/项目A" reloadable="false" crossContext="true"></Context> 
      <Context path="/项目B" reloadable="false" crossContext="true"></Context>

  </Host>

注意 crossContext 属性在帮助文档中意思

crossContext: Set to true if you want calls within this application to ServletContext.getContext() to successfully return a request dispatcher for other web applications running on this virtual host. Set to false (the default) in security conscious environments, to make getContext() always return null.

设置为true 说明你可以调用另外一个WEB应用程序 通过ServletContext.getContext() 获得ServletContext 然后再调用其getattribute() 得到你要的对象.

 

2:  在项目A中,写入以下代码:

我们假定 项目A 为/myweb

  项目B为 /w2


   //以下内容用于测试同一tomcat下不同项目之间共享session 
    HttpSession session = req.getSession();

session.setAttribute("name", "xbkaishui");

session.setMaxInactiveInterval(6565);

  ServletContext ContextA =req.getSession().getServletContext();

  ContextA.setAttribute("session", req.getSession());

//测试

out.println("IN SessionRangleServlet name : "+session.getAttribute("name"));

3.在项目B中,写入以下代码取出Session

  HttpSession session1 =req .getSession();  

        ServletContext Context = session1.getServletContext();  

// 这里面传递的是项目a的虚拟路径

        ServletContext Context1= Context.getContext("/myweb");

         System.out.println(Context1);

        HttpSession session2 =(HttpSession)Context1.getAttribute("session");

        System.out.println("base传过来的user为:"+session2.getAttribute("name"));

然后重新部署就行了。

分享到:
评论

相关推荐

    Tomcat 同一服务器上 不同web项目共享session的

    4. **配置共享的Manager组件**:在Tomcat的`conf/context.xml`或每个Web应用的`WEB-INF/web.xml`中,可以指定一个共享的session管理器(Manager)。这样,所有的Web应用都会使用同一个session存储,达到共享目的。...

    tomcat7+redis单点 session共享jar

    本资源"tomcat7+redis单点 session共享jar"提供了针对Tomcat7服务器和Redis数据存储的一个解决方案,以实现跨服务器的session共享。 **Tomcat7** 是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用...

    Form实现同一服务器下的SSO

    总之,Form实现的SSO通过集中式的认证服务和票据机制,实现了在同一服务器下多应用之间的无缝登录体验。虽然涉及到的步骤和配置较多,但一旦设置好,可以极大地提升用户体验,简化管理。对于开发者来说,理解和掌握...

    nginx+tomcat8.+redis__session__单点登录、会话共享.zip

    标题中的"nginx+tomcat8.+redis__session__单点登录、会话共享"涉及到的是在分布式系统中如何实现用户会话(Session)的共享和单点登录(Single Sign-On, SSO)的问题。这里主要涉及到三个核心组件:Nginx、Tomcat和...

    asp.net 跨子域共享SESSION

    在实际应用中,通常会结合单点登录(Single Sign-On, SSO)系统来实现跨子域共享Session。SSO允许用户在一个子域登录后,其他子域无需再次登录即可访问。实现SSO时,Session共享是关键组成部分,通常会结合Cookie或...

    跨域共享session (实现http跳转https 共享session)

    但是,为了提供更好的用户体验,特别是在单点登录(Single Sign-On, SSO)场景下,跨域共享session变得非常重要。 **一、跨域共享session原理** 1. **JSONP(JSON with Padding)**:JSONP是一种早期的跨域解决方案...

    tomcat配置ssl-单点登录(sso).rar

    2. 配置CAS客户端:在每个需要SSO的应用(即Tomcat上的Web应用)中,配置CAS客户端库,如jasig-cas-client,修改`web.xml`文件,设置相关参数如CAS服务器URL和服务验证URL。 3. 跨域配置:如果应用分布在不同的域下...

    spring-session实现session共享

    5. 应用启动后,所有Session数据将自动存储在Redis中,不同应用可以访问同一份Session数据,实现SSO。 通过Spring-Session与Redis的配合,我们可以轻松地在分布式环境中实现Session的共享,让单点登录成为可能。这...

    SSM项目集成shiro搭建session共享

    7. **Shiro-Redis**:Shiro-Redis2.9是Shiro的一个扩展,它将session数据存储在Redis缓存中,解决了在分布式环境下的session共享问题。Redis是一个高性能的键值数据库,具有丰富的数据结构支持,适合存储session这样...

    J2EE限制同一账号同一时刻只能一个用户登录使用,向QQ一样

    实现单点登录(Single Sign-On, SSO)的核心在于监控和管理这些Session。具体步骤如下: 1. **登录验证**:用户输入账号密码后,服务器进行身份验证。如果验证成功,创建一个新的Session,并在Session中存储用户...

    基于Tomcat6的CAS SSO配置

    基于Tomcat6的CAS SSO配置涉及的主要知识点包括SSO(Single Sign-On,单点登录)、CAS(Central Authentication Service,中心认证服务)、SSL(Secure Socket Layer,安全套接层)以及Tomcat服务器的配置。...

    基于共享内存的SSO

    【标题】"基于共享内存的SSO"技术是一种在多进程环境下实现单点登录(Single Sign-On,简称SSO)的有效方法。它利用操作系统提供的共享内存机制,使得用户登录信息可以在不同的进程之间共享,从而避免了用户在访问多...

    PHP在同一域名下两个不同的项目做独立登录机制详解

    总结来说,要实现PHP在同一域名下两个不同项目的独立登录机制,关键在于修改默认的session_name或session_id。这可以通过在每个项目中单独设置session_name或使用自定义session_id来实现。通过这种方式,每个项目...

    SSO单点登录【基于cookie二级域名下跨域共享】

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。在基于Cookie的二级域名下跨域共享SSO实现中,核心概念是利用Cookie的特性来实现用户...

    nginx+redis实现session共享

    为了实现单点登录(Single Sign-On, SSO)以及跨应用的session共享,我们可以结合使用Nginx作为反向代理服务器,以及Redis作为持久化内存数据库来存储session数据。下面将详细解释这个解决方案的各个方面。 首先,...

    laravel实现共享session案例.docx

    - 要使两个不同源的网站能够共享 Session,还需要处理浏览器的同源策略限制。可以通过设置 `CORS`(Cross-Origin Resource Sharing)头部允许跨域请求。 7. **安全注意事项**: - 使用相同的 `APP_KEY` 可能会...

    SSO跨域单点登录Demo

    在这个Demo中,我们有两个Web应用,SSOWebDemo1和SSOWebDemo2,它们都需要共享同一个登录状态。这两个应用的配置应该允许它们信任中央认证服务器,即SSOAuth。当用户首次尝试访问任一应用时,如果尚未登录,会被引导...

    sso解决方案汇总

    对于位于同一域名或不同域名下的子域名应用程序,SSO的实现主要依赖于共享会话管理和认证信息。这通常涉及到在中央认证服务器上进行登录,然后该服务器将认证信息转发给所有相关应用,或使用统一的会话ID和cookie...

    单点登录(SSO)-同域名、不同域名

    在企业的早期发展阶段,所使用的内部系统数量有限,通常为一两个,每个系统都配备有自己的登录模块。这样的架构对于运营人员来说非常便捷,因为他们只需要记住一套登录凭据即可访问所有系统。然而,随着企业的不断...

    开发阶段:需要session共享做开发测试

    在开发过程中,尤其是在多服务或分布式系统中,有时我们需要在不同的服务器或应用之间共享Session来实现用户状态的保持。这通常发生在需要进行联合登录、单点登录(SSO)或者跨域资源共享(CORS)的场景。标题"开发...

Global site tag (gtag.js) - Google Analytics