【问题标题】:javax.servlet.ServletException: Session Object Internals: id : overflowed-sessionjavax.servlet.ServletException:会话对象内部:id:溢出会话
【发布时间】:2015-08-01 06:56:56
【问题描述】:

我在 IBM Websphere Portal 服务器上部署了一个 Portlet,在我有很多用户的繁忙时间,当您点击它的 Url 时,Portal 服务器显示“此 Portlet 不可用”。

在日志中显示以下异常...

ServletWrappe E SRVE0068E: 无法调用 servlet MyCystomPortlet 上的 service() 方法。抛出异常:javax.servlet.ServletException: 会话对象内部: id : 溢出会话

在对 google 进行了一些研究之后,我相信我们正在发生的事情是并发会话太多。首先,有人可以确认这种理解是正确的吗?

其次,我相信您可以在 Websphere 中进行一些设置。内存会话计数的最大值。目前它设置为 1000。我想将其增加到 1500,但我不确定如何计算这是否太高,因此可能会导致服务器崩溃。有人可以给我建议吗?

最后,减少我的 portlet 中的会话超时是另一种尝试解决此问题的有效方法吗?

谢谢

【问题讨论】:

    标签: websphere websphere-portal


    【解决方案1】:

    如果用户在未注销的情况下放弃会话,缩短超时时间会有所帮助,但通常最好将其从默认的 30 分钟缩短。

    您可以增加内存中的最大会话数,但您也应该增加最大堆大小。但请确保您的操作系统有足够的内存资源来处理增加的堆,否则如果系统开始交换,您的性能将非常差。

    因此,请尝试仅针对失败的应用程序进行更改(您可以覆盖每个应用程序的会话设置),不要更改 Web 容器中的全局设置,因为它们默认适用于所有应用程序。

    【讨论】:

    • 加油,谢谢你的回答。我的应用程序的问题是没有登录和注销。所以我从不使会话无效。因此,清除会话的唯一方法是超时。如果我想如何在 web.xml 文件中设置最大内存会话数。
    • @Richie 在web.xml 你只能设置超时。您只能通过应用服务器中的 Web 管理控制台设置会话计数。
    • Gas 问题是虽然我不认为在 jsr 169 portlet 的 web.xml 中有会话超时是有效的,是吗?我问 bc 我试过了,它似乎没有用。然后在论坛上阅读一些人说,在页面上为单个 portlet 设置会话超时是没有意义的,因为 portlet 只是页面上的一个小部件。如果您对此有所了解,如果您能在我的理解中确认或纠正我,将对我有很大帮助
    • 关于您之前的评论的另一个问题。您将如何在 Web 管理控制台中仅更改该应用程序的设置?目前,在 Websphere 控制台中,我们正在运行 Websphere_Portal 服务器/实例,并且门户中的所有应用程序和模块都从该实例继承了它们的设置。那么,您将如何分离出不同 portlet 的设置。谢谢
    • @Richie 大多数portlet 应用程序都会以PA 为前缀,因此您必须找到与您的war 文件名匹配的名称的其余部分。如果不查看控制台并知道应用程序的名称以及部署方式,真的很难说出更多信息。
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多