声明:是一个tomcat下的不同web项目,不是不同tomcat不同项目的,所有这里不会说用什么集群的方法....
其实也很简单,就是将session保存在ServletContext里面就可以了。
在项目A中:
session.setAttribute("user",user);
ServletContext ContextA =session.getServletContext();
ContextA.setAttribute("session", session);
在项目B中:添加一个过滤器(web.xml配置就不写了)
public class SessionFilter implements Filter {
private static final long serialVersionUID = 1L;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
HttpSession session1 =request.getSession();
ServletContext Context = session1.getServletContext();
ServletContext Context1= Context.getContext("/项目A名称");
if(Context1 !=null && !Context1.equals("")){
HttpSession session =(HttpSession)Context1.getAttribute("session");
String user = null;
try{
user =(String) session.getAttribute("user");
}catch (Exception e) {
}
request.setAttribute("user", user);
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("sessionFilter");
}
}
这样在项目A登陆用户 保存session,在项目B就可以获取A的session信息了。当然这只是单向的,双向的方法也一样了
注: <Context path="/xxx" docBase="xxx" debug="0" reloadable="true" crossContext="true"/>
crossContext必须设置为true,否则没用!!!!
此文为转载
分享到:
相关推荐
总的来说,实现Tomcat服务器上不同Web项目的session共享是一个涉及多方面技术的问题,需要对Java Web开发、Tomcat服务器配置以及安全性有深入理解。根据项目的规模和复杂性,选择合适的方法可以有效地提升用户体验并...
总之,通过Tomcat和Redis结合实现Session共享,不仅解决了分布式环境下的会话管理问题,还利用了Redis的高效特性,提升了系统的整体性能。这个方案对于大型、高并发的Web应用来说,是一种有效的优化策略。
标题中的“nginx实现多个tomcat7直接...以上就是关于“nginx实现多个tomcat7直接session共享所需jar包”的详细解释,包括了Session共享的背景、原理以及可能的实现方法。希望这些信息能帮助你理解和解决实际问题。
总的来说,这个解决方案结合了Tomcat的Web服务能力、Redis的高可用存储和Nginx的负载均衡,有效地解决了在分布式环境中Session共享的问题。在实际部署时,还需要考虑安全性、性能优化以及故障恢复等多方面因素,确保...
【描述】中提到的“实现session共享”是指在Web应用程序运行于多个服务器实例(例如,负载均衡环境)时,通过将session数据保存在外部存储(在这种情况下是Redis内存数据库)中,确保所有服务器可以访问同一份...
综上所述,"适配与Tomcat7、8、9的redis session共享jar包"提供了一种有效的方法,解决了在多台Tomcat服务器之间共享session的挑战,利用Redis的高效存储和检索能力,提高了Web应用的可扩展性和用户体验。...
Tomcat7提供了几种session共享策略,包括以下几种常见方法: 1. **JVM-RMI**:这是Tomcat默认的session复制方式。每个服务器都将session对象复制到其他服务器,通过Java远程方法调用(RMI)实现。这种方式简单易用...
总结起来,这个“tomcat8+redis+session共享jar包”提供了一种有效的方法,通过集成Redis来实现Tomcat 8.0和8.5的session共享,提升了应用的性能和可扩展性,尤其适合大型分布式系统。开发者可以通过配置和使用`...
接下来,我们将详细讲解如何配置和实现Tomcat8与Redis的Session共享: 1. **安装Redis**: 在开始之前,确保已经在服务器上安装并运行了Redis。可以在Redis官网下载相应平台的二进制包,解压后启动Redis服务器。 2....
通过将session数据序列化后存入`redis`,不同服务器可以访问同一份session数据,从而实现session共享。 实现步骤如下: 1. **安装和配置redis**:首先确保在所有需要共享session的服务器上都安装了`redis`,并启动...
Tomcat提供了多种方式来实现session共享,如使用粘性会话、共享内存、数据库存储以及基于JNDI的会话复制等。 1. **粘性会话(Sticky Sessions)**:这是最简单的session共享方式,通过负载均衡器将特定用户的请求...
2. 添加依赖:在Tomcat服务器上,将`tomcat_Session共享jar包`中的相关jar文件添加到项目的类路径中。这些jar文件通常包括与memcached交互的客户端库,如spymemcached。 3. 编码集成:在Servlet过滤器中,用...
`session`在Web应用中用于存储用户状态信息,如果在`Nginx`负载均衡下不共享,会导致用户在切换服务器时丢失`session`数据。有几种常见的解决方案: 1. **Cookie-Based**:将`session ID`存储在cookie中,每次请求...
在构建分布式系统时,Session共享是一个关键问题,特别是在使用Linux上的Tomcat服务器集群与Nginx作为反向代理的情况。标题“tomcat-session共享”和描述中提到的问题,主要是指如何在多台Tomcat服务器之间以及通过...
3. **添加共享session的jar文件**:压缩包中的"tomcat6+redis做session共享亲测可用"文件可能包含了一个实现了session共享功能的jar文件,需要将其添加到Tomcat的lib目录下,使得Tomcat能够使用这个库。 4. **配置...
本篇文章将深入探讨Tomcat集群中session共享的解决方案,以及相关的应用知识。 1. **Session复制**:这是最基础的session共享方法。通过配置Tomcat的`cluster`模块,可以设置session复制策略。每当一个session在...
下面我们将详细探讨如何实现Nginx+Tomcat+Memcached的集群和Session共享。 **Nginx** Nginx是一款轻量级的Web服务器/反向代理服务器,以其高效的性能和低内存占用著称。在本场景中,Nginx主要负责以下任务: 1. **...
标题中的“tomcat8 用redis共享session用于jdk8以上版本”揭示了本文将深入探讨在Java开发环境中,如何利用Tomcat8应用服务器与Redis内存数据存储系统来实现跨服务器的Session共享,特别针对JDK8及更高版本。...
通过以上步骤,我们可以构建一个基于nginx、tomcat和redis的服务器集群,有效地实现了session共享。这种架构不仅提高了系统的可用性和扩展性,还保证了用户在集群中的体验一致性。在实际应用中,还可以根据需求调整...
在现代Web应用开发中,session共享...总结,`tomcat-redis-manager`使得Tomcat能够利用Redis实现高效的session共享,解决了分布式环境下的session一致性问题。通过正确配置和优化,可以显著提升Web应用的性能和可靠性。