【问题标题】:Glassfish 2.1.1 - Session Beans repeatedly call init() and destroy()Glassfish 2.1.1 - 会话 Bean 反复调用 init() 和 destroy()
【发布时间】:2011-04-19 05:36:35
【问题描述】:

我有一个 Web 应用程序正在尝试从 Sun Application Server V9 迁移到 Glassfish V2.1.1

我使用 Netbeans 6.0.1 开发 App,它使用 JSP、SessionBeans 和 JDBC 连接 MySQL。

我已经取得了不错的进展,可以编译和部署应用程序了。到 Glassfish 好。 应用程序启动,我将我带到我的登录页面,在那里我可以正常登录。

但是,我可以看到,在呈现每个 JSP 页面时,我的所有 SessionBeans 都会重复调用 init() 和 destroy() 方法。

我的会话 Bean 扩展了 AbstractSessionBean

public class SessionBean1 extends AbstractSessionBean {

使用 Netbeans 调试工具,我找到了 LifecycleListener.attributeReplaced(HttpSessionBindingEvent event) 方法,该方法在我的 AbstractSessionBeans 上调用了 destroy() 和 init() 方法

public void attributeReplaced(HttpSessionBindingEvent event) {

    // If the old value is an AbstractSessionBean, notify it
    Object value = event.getValue();
    if ((value != null) && (value instanceof AbstractSessionBean)) {
        ((AbstractSessionBean) value).destroy();
    }

    // If the new value is an AbstractSessionBean, notify it
    value = event.getSession().getAttribute(event.getName());
    if ((value != null) && (value instanceof AbstractSessionBean)) {
        ((AbstractSessionBean) value).init();
    }

}

在 Netbeans 5.5 和 Sun Application Server V9 中,AbstractSessionBean 会话 Bean 工作正常,并且不会一直调用它们的 init() 和 destroy() 方法。

我检查了我的会话 Bean 是否在 faces-config.xml 中。

所以,我的感觉是,这是我对 Glassfish 2.1.1 的配置...

你能帮忙吗?

谢谢

附言

只是添加到这个......

我可以完全将 Netbeans 6.0.1 中的相同应用部署到:

  • Sun App Server V9 运行良好 使用会话 bean init() 方法 仅在 会话已创建

  • Glassfish V2.1.1 和会话 Bean init() 和 destroy() 方法获取 反复调用。

【问题讨论】:

  • 只是为了添加...。我可以将 Netbeans 6.0.1 中的完全相同的应用程序部署到: - Sun App Server V9 并且它在会话中运行良好bean init() 方法仅在创建会话时调用一次 - Glassfish V2.1.1 和会话 Bean init() 和 destroy() 方法被重复调用。

标签: java jsp session glassfish


【解决方案1】:

因此,每个请求都会启动一个新会话。这可能意味着客户端或服务器不支持 cookie,或者 Web 应用程序没有针对客户端禁用 cookie 的情况正确实施 URL 重写。

使用Firebug 之类的工具跟踪 HTTP 请求/响应标头必须提供新的见解。在新的客户端-服务器会话的第一个请求中,服务器应该在响应中使用会话 ID 设置 Set-Cookie 标头:


在同一客户端-服务器会话期间的所有后续请求中,客户端应在请求中使用 相同 会话 ID 设置 Cookie 标头:


如果其中任何一个缺失或不同,那么您应该知道问题的根本原因。

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 2012-02-27
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2017-11-26
    • 1970-01-01
    相关资源
    最近更新 更多