WebLogic设置session超时时间 .

1 web.xml

设置WEB应用程序描述符web.xml里的<session-timeout>元素。这个值以分钟为
单位,并覆盖weblogic.xml中的TimeoutSecs属性
<session-config>
<session-timeout>54</session-timeout>
</session-config>
此例表示Session将在54分钟后过期(这个配置对HttpSession设置超时时间)
当<session-timeout>设置为-2,表示将使用在weblogic.xml中设置的
TimeoutSecs这个属性值。
当<session-timeout>设置为-1,表示Session将永不过期,而忽略在
weblogic.xml中设置的TimeoutSecs属性值。
该属性值可以通过console控制台来设置

2 weblogic.xml

设置WebLogic特有部署描述符weblogic.xml的<session-descriptor>元素的
TimeoutSecs属性。这个值以秒为单位
<session-descriptor>
<session-param>
<param-name>TimeoutSecs</param-name>
<param-value>3600</param-value>
</session-param>
</session-descriptor>
默认值是3600秒

3,jsp中控制
session.setmaxinactiveinterval(7200);
session是默认对象,可以直接引用,单位秒s

4,servlet中控制
httpsession session = request.getsession();
session.setmaxinactiveinterval(7200);
单位秒s

在weblgoic的console中:xxDomain->Servers->xxServer->Protocols->HTTP 中有一个关于Post Timeout的配置,但这个参数一般使用默认值即可

一般是通过Services-->JDBC-->Connection Pools-->MyConnection(你所建立的连接池名)-->Configration-->Connections 里的Inactive Connection Timeout这个参数来设置的,默认的为0,表示连接时间无限长。你可以设一个时间值,连接超过这个时间值,它会把连接强制放回连接池

<Server AcceptBacklog="62" CompleteHTTPMessageTimeout="480"
CompleteMessageTimeout="480" IdleConnectionTimeout="600"
ListenAddress="" ListenPort="7001" Name="myserver"
NativeIOEnabled="true" ReliableDeliveryPolicy="RMDefaultPolicy"
ServerVersion="8.1.4.0">
是否IdleConnectionTimeout参数

看连接池中高级选项内的Inactive Connection Timeout和Connection Reserve Timeout时多少, 把这两项设大些试试

如果在两个文件中同时设置了超时时间,则会以web.xml中为准。
所以在weblogic环境中,最好将web.xml中关于超时的设置删掉,保持唯一性。
这也是一个客户发现了问题后,多次实验后发现的。


如果使用WEBLOGIC作为应用服务器,设置SESSION超时时间会选择在WEBLOGIC的控制台设定。实际上,WEBLOGIC是将超时设定保存在WEB-INF下的weblogic.xml中,格式如下:
<session-descriptor>
<session-param>
<param-name>TimeoutSecs</param-name>
<param-value>7200</param-value>
</session-param>
</session-descriptor>
param-value中的数值就是超时时间,单位为秒。在设置完这个参数后,会发现超时时间并一定起效。这是为什么呢?
原来在WEB-INF下还有一个配置文件web.xml,里面同样会有一段设置session,格式如下:
<session-config>

<session-timeout>30</session-timeout>

</session-config>
session-timeout中的值也是超时时间,单位为分钟。
如果在两个文件中同时设置了超时时间,则会以web.xml中为准。
所以在weblogic环境中,最好将web.xml中关于超时的设置删掉,保持唯一性。
这也是一个客户发现了问题后,多次实验后发现的。


今天上午联创科技的一个朋友问题一个他们的问题.出现大量的:

ueue: ‘billproxyqueue’ has been busy for “727″ seconds working on the request “Http Request: /bill/y
nQueryPublic.go”, which is more than the configured time (StuckThreadMaxTime) of “600″ seconds.>

一看明显是连接超时, 导致的错误.

1.程序问题,是不是程序中没有关闭连接
2.如果程序没问题,则是weblogic的StuckThreadMaxTime设置过小而引起的,一般weblogic server 的StuckThreadMaxTime默认参数是600s,即10分钟,如果并发量过大,而导致等待处理过多,导致系统不停的增加线程,造成线程阻塞,你可以把该参数设置大点这个是稍微调大StuckThreadMaxTime的参数即可.
3.看线程数设置,可适当增加线程数,这个在WLS控制台中可以调整
<think>我们正在讨论如何配置Servlet Session超时时间。根据引用内容,我们可以通过编程方式或配置方式设置。 引用[1]展示了在Servlet中使用`setMaxInactiveInterval`方法设置超时时间(以秒为单位)。 引用[2]提到要注意Cookie的超时时间应至少与会话超时时间一样长,否则会话可能提前失效。 引用[3]提到在WebLogic等应用服务器中,可以通过控制台设置(实际上会修改weblogic.xml),但通常我们也可以在web.xml中配置。 配置Session超时时间有两种主要方式: 1. 在web.xml中配置(适用于所有Servlet): ```xml <session-config> <session-timeout>30</session-timeout> <!-- 单位:分钟 --> </session-config> ``` 2. 在Servlet代码中针对特定会话设置(以秒为单位): ```java HttpSession session = request.getSession(); session.setMaxInactiveInterval(10 * 60); // 10分钟(600秒) ``` 注意:编程式设置的优先级高于web.xml中的配置。 另外,应用服务器可能有自己的配置(如引用[3]中WebLogicweblogic.xml),但通常web.xml的配置是跨容器的标准方式。 因此,根据需求选择配置方式。 相关问题: 1. 如何设置Cookie的超时时间以确保Session正常工作? 2. 不同应用服务器(如Tomcat、WebLogic)中Session超时配置的差异? 3. 如何使Session永久有效(不超时)?</think>### 配置Servlet Session超时时间的方法 在Java Web应用中,可通过以下方式配置Session超时时间: #### 1. **编程式设置(Servlet代码中)** 在Servlet中使用`setMaxInactiveInterval()`方法,**单位为秒**: ```java protected void service(HttpServletRequest req, HttpServletResponse resp) { HttpSession session = req.getSession(); session.setMaxInactiveInterval(30 * 60); // 设置30分钟超时 } ``` > 📌 此方法优先级最高,会覆盖其他配置[^1]。 #### 2. **部署描述符配置(web.xml)** 在`web.xml`中添加`<session-config>`节点,**单位为分钟**: ```xml <web-app> <session-config> <session-timeout>30</session-timeout> <!-- 30分钟 --> </session-config> </web-app> ``` > ⚠️ 注意:此配置对应用内所有Session生效。 #### 3. **应用服务器特定配置** 如WebLogic需在`weblogic.xml`中配置: ```xml <weblogic-web-app> <session-descriptor> <timeout-secs>1800</timeout-secs> <!-- 30分钟=1800秒 --> </session-descriptor> </weblogic-web-app> ``` 其他服务器(Tomcat/JBoss等)也有类似配置文件[^3]。 --- ### 关键注意事项 1. **优先级规则**: Servlet代码设置 > `web.xml` > 服务器默认设置 ```mermaid graph LR A[Servlet代码] -->|最高优先级| C[生效值] B[web.xml] --> C D[服务器配置] --> C ``` 2. **Cookie超时协调** 需确保Session Cookie的超时时间(默认浏览器会话)≥ Session超时时间,否则会提前失效[^2]: ```java Cookie sessionCookie = new Cookie("JSESSIONID", session.getId()); sessionCookie.setMaxAge(30 * 60); // 与Session超时一致 response.addCookie(sessionCookie); ``` 3. **默认值说明** - Tomcat: 默认30分钟 - WebLogic: 默认60分钟 - 可通过`session.getMaxInactiveInterval()`获取当前值 --- ### 最佳实践建议 1. 生产环境优先使用`web.xml`统一配置 2. 敏感操作(如支付)建议在代码中单独设置更短的超时 3. 分布式环境需确保所有节点时间配置一致 4. 测试工具:可通过`session.getLastAccessedTime()`验证超时逻辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值