gpt4 book ai didi

java - Glassfish 2.1.1 - session Bean 重复调用 init() 和 destroy()

转载 作者:行者123 更新时间:2023-11-30 11:57:25 26 4
gpt4 key购买 nike

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

我正在使用 Netbeans 6.0.1 开发应用程序,它使用 JSP、SessionBeans 和 JDBC 连接到 MySQL。

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

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

我的 session Bean 扩展了 AbstractSessionBean


公共(public)类 SessionBean1 扩展 AbstractSessionBean {

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


public void attributeReplaced(HttpSessionBindingEvent 事件){



//如果旧值是一个 AbstractSessionBean,通知它
对象值 = event.getValue();
if ((value != null) && (value instanceof AbstractSessionBean)) {
((AbstractSessionBean) 值).destroy();
}

//如果新值是一个 AbstractSessionBean,通知它
value = event.getSession().getAttribute(event.getName());
if ((value != null) && (value instanceof AbstractSessionBean)) {
((AbstractSessionBean) 值).init();
}

}

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

我已经检查过我的 session Bean 是否在 faces-config.xml 中。

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

请问你能帮忙吗?

谢谢

附言

只是添加到这里....

我可以将来自 Netbeans 6.0.1 的应用完全部署到:

  • Sun App Server V9,运行良好使用 session bean init() 方法只在 session 已创建

  • Glassfish V2.1.1 和 session Beaninit() 和 destroy() 方法得到反复呼唤。

最佳答案

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

使用类似 Firebug 的工具跟踪 HTTP 请求/响应 header 必须给出新的见解。在新的客户端-服务器 session 的第一个请求中,服务器应该在响应中使用 session ID 设置 Set-Cookie header :

alt text


在同一客户端-服务器 session 期间的所有后续请求中,客户端应该在具有相同 session ID 的请求中设置 Cookie header :

alt text


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

关于java - Glassfish 2.1.1 - session Bean 重复调用 init() 和 destroy(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com