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能做到这一点吗?因为我确信我没有这样做。我只是让会话过期。