[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1264) Session preDestroyContext Event causing exception
Keith Naas (JIRA)
jira-events at lists.jboss.org
Fri Apr 27 13:11:40 EDT 2007
Session preDestroyContext Event causing exception
-------------------------------------------------
Key: JBSEAM-1264
URL: http://jira.jboss.com/jira/browse/JBSEAM-1264
Project: JBoss Seam
Issue Type: Bug
Affects Versions: 1.2.1.GA
Reporter: Keith Naas
Priority: Minor
This is probably the wrong thing to do for what we need...but we did encounter this interesting error.
We registered an event on the preDestroyContext.SESSION where a stateless EJB is called to delete some items from a database.
<event type="org.jboss.seam.preDestroyContext.SESSION">
<action expression="#{service.releaseDocuments}"/>
</event>
When EJBs are passivated, this event appears to be kicking off. But since the FacesContext is null, we get a NullPointerException from com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke.
It looks like the FaceContext is null when it is called through the passivate interceptor, but it is calling the previous cachedMethodBinding which was generated when the FaceContext was not null.
Seems like the method should be changed to something like this.
private javax.faces.el.MethodBinding getFacesMethodBinding(Class[] types, Object... args)
{
FacesContext context = FacesContext.getCurrentInstance();
if (cachedMethodBinding==null || (context == null && !(cachedMethodBinding instanceof UnifiedELMethodBinding)))
{
cachedMethodBinding = context==null ?
new UnifiedELMethodBinding(expression, types) :
context.getApplication().createMethodBinding(expression, types);
}
return cachedMethodBinding;
}
11:54:08,526 ERROR [SimpleStatefulCache] problem passivation thread
java.lang.RuntimeException: java.lang.NullPointerException: FacesConext -> null
at org.jboss.ejb3.interceptor.LifecycleInterceptorHandler.prePassivate(LifecycleInterceptorHandler.java:160)
at org.jboss.ejb3.stateful.StatefulContainer.invokePrePassivate(StatefulContainer.java:351)
at org.jboss.ejb3.stateful.StatefulBeanContext.prePassivate(StatefulBeanContext.java:178)
at org.jboss.ejb3.cache.simple.StatefulSessionFilePersistenceManager.passivateSession(StatefulSessionFilePersistenceManager.java:328)
at org.jboss.ejb3.cache.simple.SimpleStatefulCache.passivate(SimpleStatefulCache.java:194)
at org.jboss.ejb3.cache.simple.SimpleStatefulCache$SessionTimeoutTask.run(SimpleStatefulCache.java:129)
Caused by: java.lang.NullPointerException: FacesConext -> null
at com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:72)
at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:148)
at org.jboss.seam.core.Events.raiseEvent(Events.java:63)
at org.jboss.seam.contexts.Contexts.destroy(Contexts.java:215)
at org.jboss.seam.contexts.Lifecycle.endCall(Lifecycle.java:72)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:117)
at org.jboss.seam.intercept.RootInterceptor.invokeAndHandle(RootInterceptor.java:81)
at org.jboss.seam.intercept.SessionBeanInterceptor.prePassivate(SessionBeanInterceptor.java:59)
at sun.reflect.GeneratedMethodAccessor1059.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.ejb3.interceptor.LifecycleInvocationContextImpl.proceed(LifecycleInvocationContextImpl.java:131)
at org.jboss.ejb3.interceptor.LifecycleInterceptorHandler.prePassivate(LifecycleInterceptorHandler.java:156)
... 5 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the seam-issues
mailing list