Session Tomcat JSF会话BEan@Predestroy";“会议已无效”;

Session Tomcat JSF会话BEan@Predestroy";“会议已无效”;,session,jsf,tomcat,tomcat7,Session,Jsf,Tomcat,Tomcat7,因此,我尝试在@SessionScopedJSF托管bean上使用@PreDestroy方法访问my的属性 session.getAttribute("myAttribute"); 但是我有一个 java.lang.IllegalStateException: getAttribute: Session has already been invalidated 为什么? 在销毁会话bean之前,我需要访问该会话打开的外部服务的连接列表,当然,它们存储在会话属性对象中 如何才能做到这一点?显

因此,我尝试在
@SessionScoped
JSF托管bean上使用
@PreDestroy
方法访问my的属性

session.getAttribute("myAttribute"); 
但是我有一个

java.lang.IllegalStateException: getAttribute: Session has already been invalidated
为什么?

在销毁会话bean之前,我需要访问该会话打开的外部服务的连接列表,当然,它们存储在会话属性对象中


如何才能做到这一点?

显式访问会话范围的托管bean中的会话属性没有意义。只需将该属性设置为会话范围的托管bean本身的属性

@SessionScoped
public class YourSessionScopedBean implements Serializable {

    private Object yourAttribute; // It becomes a session attribute already.

    @PreDestroy
    public void destroy() {
        // Just access yourAttribute directly, no need to do it the hard way.
    }

}

出现异常是因为会话通过调用而不是“just”过期而显式无效。

显式访问会话范围的托管bean中的会话属性没有意义。只需将该属性设置为会话范围的托管bean本身的属性

@SessionScoped
public class YourSessionScopedBean implements Serializable {

    private Object yourAttribute; // It becomes a session attribute already.

    @PreDestroy
    public void destroy() {
        // Just access yourAttribute directly, no need to do it the hard way.
    }

}

出现异常是因为会话通过调用而不是“just”过期而显式无效。

在会话范围内的JSF托管bean中访问会话属性?为什么不将它们存储到一个真正的会话范围的托管bean中呢?您所说的“true”是什么意思?“true”表示“true”。用真正的
@SessionScoped
注释指定的托管bean。它是用
@SessionScoped
注释指定的托管bean。我错过了什么?“true”
@SessionScoped
注释是什么意思?CDI?EJB?它们都是标准JavaEEAPI的一部分,我认为@Tiny意味着你应该将列表注入其中,而不是从会话中手动加载。为此,它也需要是一个ManagedBean(JSF、CDI等)。我希望PreDestroy的调用顺序是“Dependent”,然后是Dependent,这样您就可以在会话范围内的JSF托管bean中访问itAccessing会话属性了?为什么不将它们存储到一个真正的会话范围的托管bean中呢?您所说的“true”是什么意思?“true”表示“true”。用真正的
@SessionScoped
注释指定的托管bean。它是用
@SessionScoped
注释指定的托管bean。我错过了什么?“true”
@SessionScoped
注释是什么意思?CDI?EJB?它们都是标准JavaEEAPI的一部分,我认为@Tiny意味着你应该将列表注入其中,而不是从会话中手动加载。为此,它也需要是一个ManagedBean(JSF、CDI等)。我希望PreDestroy的调用顺序是“Dependent”,然后是Dependent,这样你就可以访问它了这就是我最后所做的,但是显式调用使会话无效是很奇怪的。JSF能做到这一点吗?因为我确信我没有这样做。我只是让会话过期。这就是我最后做的,但是显式调用使会话无效是很奇怪的。JSF能做到这一点吗?因为我确信我没有这样做。我只是让会话过期。