精华内容
下载资源
问答
  • 设定tomcatsession过期时间的三种方式
  • Tomcat集群Redis会话管理器 Redis会话管理器是可插入的。 它将会话存储到Redis中,以便在Tomcat服务器群集之间轻松分配HTTP请求。 在这里,会话被实现为非粘性的(意味着,每个请求都可以转到集群中的任何服务器,...
  • 1、在tomcat——>conf——>servler.xml文件中定义: <Context path="/test" docBase="/test"  defaultSessionTimeOut="3600" isWARExpanded="true"  isWARValidated="false" isInvokerEnabled="true" ...

    1、在tomcat——>conf——>servler.xml文件中定义:

    <Context path="/test" docBase="/test"  
      defaultSessionTimeOut="3600" isWARExpanded="true"  
      isWARValidated="false" isInvokerEnabled="true"  
      isWorkDirPersistent="false"/>
    

    2、在web.xml中定义:这个针对具体项目:

    <session-config>  
    <session-timeout>20</session-timeout>  
    </session-config>
    

    3、在程序中定义:这个就针对具体页面了:

    session.setMaxInactiveInterval(30*60);
    

    4、配置tomcat的session持久化:

    <Manager
    className="org.apache.catalina.session.PersistentManager"
    saveOnRestart="true"
    maxActiveSession="-1"
    minIdleSwap="0"
    maxIdleSwap="30"
    maxIdleBackup="0"
    > 
    <Store
    className="org.apache.catalina.session.FileStore"
    checkInterval=”60”
    directory="../session"/>
    </Manager>
    

    <Store 
    calssName="org.apache.catalina.JDBCStore"
    driverName="com.mysql.jdbc.Driver" 
    connectionURL="jdbc:mysql://localhost/tomsessionDB?user=root&password=" 
    sessionTable="tomcat_session" 
    sessionIdCol="session_id" 
    sessionDataCol="session_data" 
    sessionValidCol="session_valid" 
    sessionMaxInactiveCol="max_inactive" 
    sessionLastAccessedCol="last_access"
    sessionAppCol="app_name" 
    checkInterval="60" 
    debug="99" />
    

    maxActiveSessions-可处于活动状态的session数,default -1 不限制

    checkInterval - 检查session是否过期的时间间隔,default 60s

    saveOnRestart-服务器关闭时,是否将所有的session保存到文件中;
    minIdleSwap/maxIdleSwap-session处于不活动状态最短/长时间(s),sesson对象转移到File Store中;(-1表示没有限制)
    maxIdleBackup-超过这一时间,将session备份。(-1表示没有限制)

    directory-文件存储位置work\Catalina\host name\web app\session\文件名.session

    展开全文
  • 修改tomcat默认的session时间

    千次阅读 2019-04-08 11:12:06
    session超时设置 具体设置很简单,方法有三种: 在主页面或者公共页面中加入:session.setMaxInactiveInterval(600);参数600单位是秒,即在没有10分钟... 这里要注意这个session设置的时间是根据服务器来计算的,...

    转自:https://blog.csdn.net/e_wsq/article/details/71379534

    session超时设置

    具体设置很简单,方法有三种:

    1. 在主页面或者公共页面中加入:session.setMaxInactiveInterval(600);参数600单位是秒,即在没有10分钟活动后,session将失效。
        这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。
    2. 也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
      // 设置为0,-1 表示永不超时
      <!-- 设置session失效,单位分 --> 
      <session-config> 
      <session-timeout>1</session-timeout> 
      </session-config>
    
    1. 直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到元素,tomcat默认设置是30分钟,只要修改这个值就可以了。

    需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:1>2>3

    展开全文
  • tomcat配置session共享

    千次阅读 2019-08-31 09:26:04
    tomcat官网 打开 tomcat 官网: ...找到对应的 Clustering 配置(因为配置session共享,就是配置集群),如下图 即,配置tomcat7集群的文档地址: http://tomcat.apache.org/tomcat-7.0-doc/cluste...

    tomcat官网

    打开 tomcat 官网: http://tomcat.apache.org/ , 找到需要配置的tomcat版本的文档,这里以 tomcat7 为例,

    1-选择tomcat7文档

    找到对应的 Clustering 配置(因为配置session共享,就是配置集群),如下图
    2-tomcat官网7的文档首页-cluster

    即,配置tomcat7集群的文档地址: http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html

    配置session共享

    1.阅读官方文档

    3-tomcat7配置cluster文档

    如上图官方的文档中所说,只需配置 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 节点即可

    2.修改server.xml配置

    但其实在 tomcatconf/server.xml 的配置文件中,已经有此项配置,只是被注释了,只需将注释 打开 即可,如下图

    4-tomcat的server.xml文件cluster的配置

    3.准备测试环境

    此时,准备一个 tomcat ,如上打开 conf/server.xmlCluster 的节点配置,再准备一个简单的 javaWeb应用(打印 sessionId,做验证配置是否成功),放到 tomcatwebapps 目录下

    打印 sessionIdjsp 如下

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>session replication</title>
    </head>
    <body>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        SessionID:<%=session.getId() %>
    </body>
    </html>
    

    因为是在本地做验证,所以,再将以上配置完成的 tomcat 再复制一份,然后修改 tomcat 的端口,这里我两个 tomcat 的应用端口是 80818082,如下图所示

    5-两个tomcat的端口配置图片

    tomcatwebapps 目录,如下

    6-两个tomcat的web应用

    4.测试失败

    修改完成配置之后,分别启动 tomcat,打开浏览器测试之后,如下

    7-浏览器测试sessionId不一致

    测试发现,两个 tomcatsessionId 并不一致?!

    另外,还发现了一个问题,就是 来回刷新 浏览器的 两个tomcat的应用 的index.jsp,浏览器显示的 两个 sessionId 在不断的变化 ,但是这个问题跟配置 session共享 无关,是 cookie的作用域 导致的,后续再单独写一篇笔记讲。

    5.查漏补缺

    此时我们再返回 tomcat 官网配置 Cluster 的文档处,继续阅读,找到其中的 Cluster Basics 标签那,如下图所示,

    8-tomcat配置session共享需要完成的步骤

    文档中,说要配置 session复制 必须完成以下几步:

    • session 的所有 attributes 必须实现 java.io.Serializable (√)
    • 在 server.xml 的配置文件中,把 Cluster 的注释打开 (√)
    • 如果有自定义的集群 Valve(tomcat过滤器),就需要在 server.xml 的 Cluster 节点下配置 ReplicationValve (x,没有,不用管)
    • 如果集群的 tomcat实例 在同一台机器上,需要确保的你的 Receiver.port 不要有冲突,然后还顺道赞美了他家的 tomcat ,在大部分场景下能够自动检测4000-4100范围内的可用端口来,解决此问题 (√,默认配置就已经支持了)
    • 需要在 web应用 的 web.xml 文件中,配置 <distributable/> 节点 (x,这个没有配)
    • 如果集群用到了 mod_jk,就要在 server.xml 的 Engine 节点配置 jvmRoute 的属性,如<Engine name="Catalina" jvmRoute="node01" > 并且 jvmRoute 属性值与 workers.properties 中的 worker name 匹配 (x,没配,不用管)
    • 集群的所有节点,系统时间要一致,并与 NTP service 同步 (√,同一台机器)
    • 将负载均衡服务器(apache、nginx等),配置为粘性会话模式 (x,暂时没有配负载均衡,不用管)

    所以,意思就是,conf/server.xml 中配置了 Cluster 节点外,还需要在 web应用web.xml 文件里面配置 <distributable/> 节点,如下图所示

    9-web应用的web.xml文件配置distributable节点

    6.重新测试

    配置完成之后,重新启动两个 tomcat,重新刷新浏览器的页面,此时如下图所示,sessionId 已经一致,即 session共享 配置成功。

    10-浏览器测试sessionId一致

    探究

    1.Cluster 节点的默认配置是什么?

    上文在官网中截取的,配置 Cluster 节点的图,如下所示,

    3-tomcat7配置cluster文档

    图中最后提到的,The following is the default cluster configuration 如下配置,

    		<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                     channelSendOptions="8">
    
              <Manager className="org.apache.catalina.ha.session.DeltaManager"
                       expireSessionsOnShutdown="false"
                       notifyListenersOnReplication="true"/>
    
              <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                <Membership className="org.apache.catalina.tribes.membership.McastService"
                            address="228.0.0.4"
                            port="45564"
                            frequency="500"
                            dropTime="3000"/>
                <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                          address="auto"
                          port="4000"
                          autoBind="100"
                          selectorTimeout="5000"
                          maxThreads="6"/>
    
                <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                  <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
                </Sender>
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
              </Channel>
    
              <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                     filter=""/>
              <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
    
              <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                        tempDir="/tmp/war-temp/"
                        deployDir="/tmp/war-deploy/"
                        watchDir="/tmp/war-listen/"
                        watchEnabled="false"/>
    
              <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />
              <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
            </Cluster>
    

    即配置 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 与上面这一大段的配置内容,效果是一样的,但是这样一来,细粒度越小,可以调整的内容也就越多

    在上面的这么多配置中,需要注意的是,address="228.0.0.4" 这个地址为 组播地址,属于 ip地址 中的 D类地址

    11-Cluster完整默认配置的组播地址

    这个地址可以改,但是只能改为另一个组播地址。如果随便填一个非组播地址,tomcat启动的时候会报一个 Not a multicast address 的错误,这个报错来自 javajava.net.MulticastSocket,如下所示,

    12-net包报不是一个组播地址的错误

    在配置了 Cluster 节点之后,tomcat启动的过程中,会调用 org.apache.catalina.tribes.membership.McastServicestart() 方法,然后在方法中验证 address 的值是否是一个组播地址D类地址,它的第1个字节的前四位固定为 1110,即 ipv4 的地址的下限为 224.0.0.1

    13-Inet4Address的isMulticastAddress方法

    2.tomcat之间如何进行session复制的通信?

    tomcat 文档的最后,有讲到这个问题:

    当配置了 Cluster 节点的 tomcat 启动的时候,会创建 Host 对象,并用一个集群对象与之关联。启动过程中,到了解析 Context (即 web应用)的时候,如果 web应用web.xml 配置了 <distributable/> 的节点,则 Cluster 的对象会创建一个 manager 去管理 session复制。之后,Cluster 的对象将启动一个 membership 的服务(多播)和一个 replication 的服务(tcp单播)。下图是关于上述描述的 tomcat源码

    14-tomcat源码cluster创建manager管理session复制

    Tomcat 之间的 session replication 通信是使用简单的 多播ping 建立的。每个 Tomcat实例 将定期发出 多播ping,在 ping消息 中,会包含 Tomcat实例IPTCP侦听端口 去进行 与其他实例的 session复制。如果 Tomcat实例 在给定的时间范围内没有收到此类ping,则该成员被视为已死。

    Tomcat实例 收到 组播ping,该成员就会被添加到集群中,在下一个复制请求时,发送实例将通过集群的成员列表侦听的 ip和端口 信息(单播)建立 TCP Socket连接,进行 session复制

    组播传输:在发送者和每一接收者之间实现点对点网络连接,如果一台发送者同时给多个接收者传输相同的数据,也只需要复制一份的相同数据包,它提高了数据的传输效率。

    在因特网中的IP组播也是用组播组的概念,每个组都有一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址。在IPv4中,这些地址在D类地址空间中分配,而IPv6也有一部分地址空间保留给组播组。

    需要注意的是,主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。

    15-单播与组播的比较

    即,Tomcat 启动时,发送 组播ping 建立集群的成员列表。在下一个 session复制 的请求时,根据集群成员列表的各成员侦听的 ip和端口,逐一建立 socket连接 ,进行 session复制

    展开全文
  • 在学习Tomcat时有一些误解,主要来自于Tomcat配置文档中关于maxThread和maxConnection的问题。Thread和Connection怎么对应?和session又怎么对应,这么一想我对整个C/S交互其实并没有怎么梳理过。 我一开始的想法...

    在学习Tomcat时有一些误解,主要来自于Tomcat配置文档中关于maxThread和maxConnection的问题。
    Thread和Connection怎么对应?和session又怎么对应,这么一想我对整个C/S交互其实并没有怎么梳理过。
    我一开始的想法自然是,Thread对应Connection,Connection对应session,相信应该也有过同样想法的朋友
    对于session一开始的概念是这样的,某些写得很烂的教科书上面可能也类似这样一笔带过——
    “在浏览器创建会话时创建一个session,关闭浏览器session结束。”
    这也是为什么我会把Connection对应到session,以至于无法理解配置中的keep-alive参数
    如果session对应Connection,那么keep-alive干嘛?我们不都一直连着吗
    又假如,keep-alive设得比较小,那么不keep的连接一断开,那我岂不是取不到session中的东西了吗
    另一方面,假如这样,那么Tomcat中默认的maxThread=200不就意味着只能200个人同时访问吗
    应该是错的,仔细一想就觉得不可能。

    于是我开始测试。新建一个Web项目,全部默认,只有一个index.jsp。
    然后再新建一个Listener,用于监听HTTPSession。当连接建立,连接断开在控制台输出。

    @WebListener
    public class SessionListener implements HttpSessionListener {
    
    	@Override
    	public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    		HttpSession session=httpSessionEvent.getSession();
    		System.out.println(session.getId()+"created");		
    	}
    
    	@Override
    	public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
    		HttpSession session=httpSessionEvent.getSession();
    		System.out.println(session.getId()+"destoryed");
    	}
    }
    
    

    然后当我打开页面,没错,session created,但是关闭浏览器后,并没有输出session destroyed
    果然,session并不对应connection,因为连接已经断开。
    所以我的理解有问题,接下来便是系统整理的部分了。


    第一个问题,session是什么?
    session是一种机制,用于保存会话信息,和cookie有些类似,可以理解为在服务器端保存的一个文件,而cookie保存在客户端处。不同于cookie,它保存的而在客户端这边的就只有session id,也即“痕迹信息”,当一个请求建立,会发生以下几件事

    1. 客户端木有session id,不发,有的话,发到服务器
    2. 服务器检查session id是否存在,也即有没有这个文件
    3. 没有的话新建,当然没发过来也新建
    4. 根据session文件中保存的东西进行查询啥的

    关于session的实现机制,其实有好几种,其中一种是使用会话cookie,也即用cookie保存session id,会话结束也即关闭浏览器时,这个cookie被删,那么服务器自然找不到原有的session,使用会话cookie的方式时,就可以理解为session在关闭浏览器时就无效了。

    但是,但是,服务器是没有机会知道的,它只存了个文件,你关了浏览器人文件还在,并不是没了。所以为了应对这种情况,它有一个失效时间——太长时间不用这个session,服务器那边就删了。
    另外一些机制可以实现关闭浏览器依旧留着session id,不用回话cookie,存在别的地方,这里不详谈。
    (其实学java的童鞋现在可以打住了,往下可以甩给运维操心去了,但看一下对于理解理论挺不错的)

    第二个问题,Tomcat中的connection指的是什么?
    要理解这个,还需官方文档,maxConnection参数隶属于<Connector></Connector>所以从它入手

    The HTTP Connector element represents a Connector component that supports the HTTP/1.1 protocol. ....A particular instance of this component listens for connections on a specific TCP port number on the server.One or more such Connectors can be configured as part of a single Service, each forwarding to the associated Engine to perform request processing and create the response.

    翻译过来便是:

    HTTP Connector 配置元素代表着支持HTTP/1.1协议的Connector部件(也即Tomcat内置部件),每一个特定的Connector监听着服务器上一个特定的TCP端口。一个或多个Connector可以配置为单独一个Service,每个对应相关联的引擎以处理request请求并response。

    所以可知,Tomcat中的connection指的是http在进行request时建立的连接,也即http连接
    再看到keep-alive,在http中,开启它意味着保留长连接不断开,它的优点在于:
    当我们打开网页,就会建立一条http连接,然后会有大量的request和response来来回回,传递html、css、js等等。多个request复用一条连接,无疑加快了传输,所以在http1.1中,这个参数默认开启。
    如果我们在http报头中设置:Connection:close,那么打开网页本身就会有不断的http连接建立和断开的过程。
    这里要清楚一点,服务器可以不管客户端的keep-alive请求,服务器为什么不管呢?其实就是因为大家默认开启着,如果服务器不灵活一点主动关闭一部分,那么服务器资源就不够。服务器的内存、CPU都是有限的,太多的线程会耗尽服务器资源,大家都keep-alive,占着茅坑不拉屎也不是办法。
    第三个问题,Tomcat中关于以上这些东西的配置,以及它们意味着什么?
     

    maxThreads——最大线程数
    The maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200.

    request请求的最大线程数,因此决定了同时有多少request会被处理,如果未指定,默认200个。

    需要注意的是,比如此时有200个人接着服务器,但是不一定发生了200个请求,所以下文maxConnection的配置中,可以看到,maxConnection默认可以指定到10000。
     

    maxConnections——最大HTTP连接数
    The maximum number of connections that the server will accept and process at any given time. When this number has been reached, the server will not accept any more connections until the number of connections falls below this value. The operating system may still accept connections based on the acceptCount setting. Default value varies by connector type. For BIO the default is the value of maxThreads unless an Executor is used in which case the default will be the value of maxThreads from the executor. For NIO the default is 10000. For APR/native, the default is 8192.

    服务器接受和处理的最大连接数,如果达到了这个数,就不再接受连接了,但是如果你指定了acceptCount参数,还是会接受连接,但是不处理。默认由connector类型进行指定,BIO类型(同步阻塞)时等于线程数除非使用了executor,NIO(非同步阻塞)时为10000,APR时为8192。

    acceptCount——连接已满时接受请求数
    The maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full will be refused. The default value is 100.

    当所有能用的request处理线程都繁忙时,接受建立连接请求的数量,大于这个参数会被直接拒绝,默认为100.

    maxKeepAliveRequests
    The maximum number of HTTP requests which can be pipelined until the connection is closed by the server. Setting this attribute to 1 will disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining. Setting this to -1 will allow an unlimited amount of pipelined or keep-alive HTTP requests. If not specified, this attribute is set to 100.

    在连接关闭前有多少http request可以同时传输。设为1会直接关闭keep-alive,也即不管客户端报头怎么请求,设成-1会允许无限的同传,如果未指定,默认100个。

    keepAliveTimeout
    The number of milliseconds this Connector will wait for another HTTP request before closing the connection. The default value is to use the value that has been set for the connectionTimeout attribute.

    在关闭http连接前,会等待另外一个request的时间,单位毫秒。默认值由客户端的connectionTimeout指定。
     

    总结一下:

    1. 浏览器向服务器发送请求,Tomcat检查是否超过了maxConnections,是否设置了acceptCount,
    2. 没有设置acceptCount,超过了maxConnection则服务器无响应。
    3. 设置了acceptCount,接受连接请求,排队
    4. 连接已建立,检查request请求是否有可用线程,有的话处理,没有排队
    5. 接受request,查看session,进行相应处理
    6. 回传,查看 maxKeepAliveRequests,还有盈余就传,没有等待
    7. 检查是否timeout,是则断开

    结语:

    虽然梳理了这么一番,但笔者并没有能力进行测试,(Log不知道怎么打),所以有错误请指正!

    也请也没有能力测试的朋友,兼听则明,比如关于maxKeepAliveRequest这个配置参数笔者在查阅资料时已经看到不止一种声音了,只能推敲下官方文档,觉得符合逻辑时定下来文中的说法。

    参考:

    Tomcat官方文档

    HttpWebRequest中的KeepAlive - Allan_Dragoon - 博客园

    tomcat优化——并发和Tomcat线程数

    HTTP的长连接和短连接-烛秋-博客园

    session机制详解

     

    展开全文
  • checkInterval - 检查session是否过期的时间间隔,default 60s saveOnRestart-服务器关闭时,是否将所有的session保存到文件中; minIdleSwap/maxIdleSwap-session处于不活动状态最短/长时间(s),sesson对象转移...
  • TomcatSession创建机制

    千次阅读 2018-01-12 17:35:53
    背景: 测试部门做压力测试, 结果没压多久,就出现OutOfMemory.... 原因查找,通过监控工具,发现StandardSession(org.apache.catalina.session.StandardSession)对象不断增长,毫无疑问,肯定是在不断创建Sess
  • Tomcat Session总结及底层实现

    千次阅读 2019-05-13 13:08:52
    @Author 风一样的码农 @HomePageUrl http://www.cnblogs.com/chenpi/ ... 阅读目录 什么是Session Session的目的 ...Tomcat中的session实现 第一次访问时新建session(此部分为原创) session存在的问题 ...
  • session失效的设置方法可以分为两大类四小种: 1. 中间件(以Tomcat为例) 1.1. tomcat/conf/web.xml(推荐) 1.2. tomcat/conf/server.xml ...任选一种方式即可完成session失效时间控制。 1.通过tomcat
  • 使用Tomcat设置Session

    2018-08-09 09:22:46
    Session共享 ... 保存的内容主要包括:SessionID、帐号名,过期时间,路径和域 使用Tomcat设置Session 使用4台RHEL7虚拟机,其中一台作为Nginx前端调度器服务器(eth0:192.168.4.5,eth1:172.16....
  • from:‍... ‍tomcat在5.5以后,就没有自带admin项目了,如果要从http://localhost:8080界面进入tomcat管理页面,需 要从网上下载对应的tomcat-admin.zip,举个例...
  • 修改tomcat默认的session时间永不过期 冷月宫主 转自: http://blog.sina.com.cn/s/blog_6d00214601013fag.html session超时设置 具体设置很简单,方法有三种:  (1)在主页面或者公共页面中加入:session....
  • Tomcatsession默认有效时间是30min

    千次阅读 2019-09-21 21:01:04
  • tomcat实现分布式session

    2019-12-20 14:54:50
    tomcat实现分布式session tomcat-redis-session-manager 使用 Copy the following files into the TOMCAT_BASE/lib directory: tomcat-redis-session-manager-VERSION.jar jedis-2.5.2.jar commons-pool2-2.2.jar ...
  • Tomcatsession详解

    千次阅读 2017-03-06 09:34:49
    Tomcatsession详解 分类:web容器 (489) (0) 深入Tomcat源码分析Session到底是个啥! Session到底是个啥? 我们都知道,HTTP协议本身是无状态的(Stateless),这对于一些简单的...
  • 但是如果使用轮询方式的话,可能会访问不同的Tomcat,此时如果不进行Session共享,则相当于是一个新的Session。就比如现有系统都是需要认证登录的系统,如果没有Session共享,则会导致用户退出登录。2、方案1:使用...
  • Tomcat集群Session共享的几个方案

    千次阅读 2019-02-16 10:12:45
    Tomcat集群Session共享的几个解决方案 问题由来 当我们的业务使用单个Tomcat不足以支持访问请求的时候,需要引入Tomcat集群。而每个TomcatSession是不互通的,如果用户的请求落入到不同的Tomcat中,用户需要频繁的...
  • 可以在重启服务器的过程中,保证Session也能被恢复 主要通过修改tomcat配置文件中的conf中的context.xml文件 主要有两种方式 1. 去除原本注释 将其如下的注释去掉 将如下的配置的注释去掉 变成 <Manager ...
  • 一、Tomcat相关影响session管理的配置文件 1 . conf/content.xml,默认配置中Manager 注释不打开情况下,重启后后保留session不失效。 Manager 打开情况下,重启后会丢失session &amp;amp;amp;amp;amp;lt;!-- The...
  • 基于Redis集群的tomcat集群Session共享

    千次阅读 2018-07-09 15:25:20
    Tomcat使用Redis缓存Session,集中把Session缓存到Redis服务器中,而不是缓存到服务器的内存中,可以实现集群服务器共享Session。  应用场景:  1.当网站接收大量请求时,单一服务器终究无法满足需要处理的负荷量...
  • -- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html --> < Listener className = "org.apache.catalina.mbeans.ServerLifecycleListener" /> < Listener className = "org...
  • 偶然发现Tomcat会话时间的半小时,并不是说会话创建后,只有半小时的有效使用时间,而是说会话空闲半小时后,会被删除。索性就翻了一下源码。做了一番整理。 注:空闲时间,指的是同一个会话两次请求之间的间隔时间 ...
  • 可以采用如下三种方式,设置这个连接(Session)的过期时间:前两个都是修改tomcat的配置文件conf1. 在server.xml中定义context时采用如下定义:xml 代码&lt;Context path="/livsorder" docB...
  • tomcat上发布项目session失效

    千次阅读 2018-05-23 19:56:30
    classes下面的一个文件夹内,当我执行删除文件的操作的时候会导致所有的用户全部强制退出登录了这个问题困扰了我很长一段时间,我以为是shiro使用不当产生的错误,后来才发现原来是部署到tomcat中之后如果...
  • 设置Tomcat Session超时时间的三种方式

    千次阅读 2017-05-01 11:41:29
    Tomcat Session过期时间 Tomcat采用数据库连接池技术,当用户在一定时间不对数据库有操作时间后,就自动关闭这个连接,这是为了更好的利用资源,防止浪费宝贵的数据库连接资源。 可以采用如下三种方式,设置这个...
  • tomcat管理及session设置

    千次阅读 2017-02-04 15:08:23
    查看session值: Tomcat5.5.30直接查看,还没找到方法, 可以在debug时查看value   tomcat在5.5以后,就没有自带admin项目了,如果要从http://localhost:8080界面进入tomcat管理页面,需要从网上下载对应的tomcat-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,772
精华内容 31,108
关键字:

session时间tomcat