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

标签 java jsp session glassfish

我有一个 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 Bean init() 和 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/

相关文章:

java - 在 java 中首次运行时设置变量

node.js - Passport.js 如何处理 session ?

java - 如果存在多个名为 JSessionIDs 的 cookie,tomcat 是否会返回 session

java - 如何在 hadoop 的新 api 中设置 setMaxMapTaskFailuresPercent?

java - UnsatisfiedLinkError using JNI for Native C Package libfprint

jsp - 如何在另一个 EL 表达式中嵌套一个 EL 表达式

java - 使用 Eclipse 在 Apache Tomcat 中出现错误 404

PHP Paypal 结帐

java - Derby 服务器连接已存在

java - 欧元货币出现问号?